当前位置: 首页 > news >正文

建设厅网站密码找回合肥房产网官网

建设厅网站密码找回,合肥房产网官网,wordpress上传文件插件,营销型网站的推广java 枚举 菜鸟在对Java和Groovy代码进行的各种代码审查中#xff0c;我经常看到魔术数字和其他随机字符串散落在整个代码库中。 例如#xff0c;下面的#xff08;Groovy#xff09;代码段中的4.2是一个神奇的数字#xff1a; if (swashbuckle 4.2) {... }4.2是什… java 枚举 菜鸟 在对Java和Groovy代码进行的各种代码审查中我经常看到魔术数字和其他随机字符串散落在整个代码库中。 例如下面的Groovy代码段中的4.2是一个神奇的数字 if (swashbuckle 4.2) {... } 4.2是什么意思 我的建议是将一个数字提取为一个常数并为其赋予一个有意义的意图显示名称以便我们所有人都可以继续理解我们的代码。 重构成 if (swashbuckle MAX_ALLOWED_CAPACITY) {... } 即使是初学者也可以理解The Constant的值并开始将各地的值提取为常量。 当我谈论枚举时编写可读代码的可能性更大但是经验不足的开发人员很快就会陷入以下陷阱。 陷阱1全球Über-Constants文件 应尽可能避免使用全局常量文件例如 class Constants {private static final String PEACH_FLAME PFLprivate static final int MAX_TOOGIT 17private static final int MIN_TOOGIT 8private static final String USER_NAME_AGE_PROPERTY ageprivate static final String USER_NAME_FLOPPY_PROPERTY floppyprivate static final int CUSTOM_HYSLERIA_DONE -99private static final ListString WOBBA_RANGE [BZ, FLL, BZZ]// dozens of other constants... 引用StackOverflow总结得很好 我强烈建议不要使用单个常量类。 当时这似乎是个好主意但是当开发人员拒绝记录常量并且该类增长到包含多达500个完全不相关的常量与应用程序的完全不同的方面时这通常会变成完全不可读的常量文件。 代替 如果可以访问Java 5请使用枚举为应用程序区域定义特定的常量。 对于这些常量应用程序区域的所有部分都应引用枚举而不是常量。 您可以声明类似于声明类的枚举。 枚举也许是Java 5的最也是唯一的有用的功能。 如果您的常量仅对特定类或其子类之一有效则将其声明为protected或public然后将其放在层次结构中的顶级类上。 这样子类可以访问这些常量值如果其他类通过公共访问它们则这些常量不仅仅对特定的类有效……这意味着使用该常量的外部类可能与包含该常量的类紧密耦合。常数 如果您有一个定义了行为的接口但是返回值或参数值应该特别那么在该接口上定义常量是完全可以接受的以便其他实现者可以访问它们。 但是请避免创建仅用于保存常量的接口它可能与仅为保存常量而创建的类一样糟糕。 单个类例如我们上面的Constants示例很快就变成了一切 。 新秀开发人员认为他通过将魔术数字和魔术字符串提取为常量来遵循良好的代码审查建议但是团队很快就承担了新的维护负担。 如果你发现自己或你的团队这样做请把负责任的车主如用户相关的常数常量在UserService在和wobba相关常量WobbaConverter -不管它是什么 还请阅读上面注释中有关枚举的部分因为常量并不是镇上唯一的孩子。 有时我的建议是…… 首选枚举 如果您的常数可以很好地建模为枚举请考虑枚举结构。 枚举比简单的常量更具通用性 ; 它们是类可以包含属性和方法。 在负责任的父类中。 更喜欢 class Person {enum Gender { M, F }String nameGender gender } 过度 class Person {static final String GENDER_MALE Mstatic final String GENDER_FEMALE FString nameString gender } 或作为使用它的班级附近的一个单独的班级 如果它变大。 具有功能名称的enum类的一个很好的例子是例如一些相关的技术数据 /*** Represents medicine domain codes.*/ public enum MedicineCode {/** Diagnosis e.g. Muscle damage. */DIAGNOSIS(X357),/** Units in medicinal context e.g. cc/ml. */MEDICINE_UNIT(X523),/*** Cause codes for diagnosis Masitis e.g. E.coli (ECO).*/CAUSE_CODE(X536),/** TreatmentType e.g. Antibiotics. */INTERVAL_TYPE(X520), MedicineCode(String code) {this.code code;}private final String code;public String code() {return code;}/*** Find a {link MedicineCode} by given String code.** param code The code e.g. X261* return found medicine code, or null*/public static MedicineCode findByCode(String code) {values().find { it.code() code }}Overridepublic String toString() {return name() ( code() )} } 每当需要表示一组固定的常量时都应使用枚举类型。 因此新秀开发人员认为他通过将内容提取到枚举封装技术数据使用功能名称等方式来遵循良好的代码审查建议但通常会陷入 陷阱2定义枚举但未正确使用它们 因此如果您最初具有以下方法和调用 Medicine findMedicineForDomainCode(String code)// which you call like: String intervalTypeCode X520 findMedicineForDomainCode(intervalTypeCode) 并且您可能会引入像MedicineCode这样的枚举请参见上文将所有这些特定于域的技术例如数据库“ X…”代码例如“ X520”封装在一起然后不要这样做 Medicine findMedicineForDomainCode(String domainCode)// which one keeps calling like: String intervalTypeCode MedicineCode.findByCode(X520) findMedicineForDomainCode(intervalTypeCode) 我见过像这样的团队。 是的有一个带有值的枚举类型但是团队在整个代码中并不十分了解如何处理它们。 第一步是直接引用枚举 。 某些菜鸟开发人员通常最初已经理解了这一点这取决于他们是否遵循Oracle Java Enum Types教程或类似内容但通常会导致如下所示 Medicine findMedicineForDomainCode(String code)// which one calls like: String intervalTypeCode INTERVAL_TYPE.code() // WRONG! still using Strings here findMedicineForDomainCode(intervalTypeCode) 有了枚举意味着我们现在可以键入所有内容包括返回类型和方法参数 。 只是将枚举用作容纳字符串的容器并不是我们这样做的原因为了获得更好的类型安全性和可读性您应该重构代码中的所有内容以便将域代码用作MedicineCode枚举的字符串类。 更好 // first refactor method parameter from String to MedicineCode Medicine findMedicineForDomainCode(MedicineCode code)// now just pass an enum value findMedicineForDomainCode(INTERVAL_TYPE) 然后直到那时在最后一个可能的时刻您需要实际封装的String代码“ X520”–可以从枚举值中提取它。 希望这有助于定义常量和使用枚举。 我无法涵盖使用适当设计的枚举类型可能具有的所有“有效”用法和OO优势的所有其他情况但是希望本文能够防止Java新手陷入所描述的陷阱。 翻译自: https://www.javacodegeeks.com/2016/04/2-rookie-java-constants-enums-pitfalls.htmljava 枚举 菜鸟
http://www.zqtcl.cn/news/604216/

相关文章:

  • 有什么网站可以帮人做模具吗热搜榜百度一下你就知道
  • 深圳网站优化技巧邹城住房城乡建设部网站
  • 小型企业网站建站桂林市中考信息网官网
  • 雏鸟app网站推广做网站用宋体有版权问题吗
  • 建立网站数据库开公司流程及费用2022最新
  • 外贸谷歌网站推广wordpress调用上传图片
  • 360提示危险网站原因威海 网站开发
  • 赣州本地网站网站怎么写
  • 物业公司网站设计湛江做网站软件
  • 做招聘求职网站wordpress启用插件出错
  • 珠海网站运营网站个人备案流程
  • 网站开发用什么图片格式最好网络营销名词解释是什么
  • 做柜子网站老电脑做网站服务器
  • 域名购买网站网店装修是什么
  • wordpress 网站备份为什么企业要建设自己的企业文化
  • 想做一个部门的网站怎么做潍坊网站建设价
  • 网站建设公司的公司哪家好什么行业必须做网站
  • 电子商务网站前台设计wordpress 上传文件大小
  • 深圳市住房和城乡建设局网站非常好的资讯网站设计
  • 长春作网站建设的公司国家建设环保局网站
  • 网站开发的有哪些好的软件wordpress菜单栏的函数调用
  • 家庭清洁东莞网站建设技术支持建筑模板厂投资多少钱
  • 郑州企业建站详情网站开发和网页开发有什么区别
  • 山西古建筑网站个人网站可以做自媒体吗
  • 腾讯云服务器可以做网站wordpress中文正式版
  • 做相亲网站赚钱吗vultr部署wordpress
  • 网站被挂马原因做网站较好的框架
  • 网站开发毕业设计参考文献自考大型网站开发工具
  • p2p网站建设方案策划书黄山旅游攻略冬季
  • 最世网络建设网站可以吗小说网站制作开源