Java 编码规范2(编程规约-常量定义)

编程规约-常量定义


其它相关文章
Java 编码规范1(编程规约-命名风格)
Java 编码规范2(编程规约-常量定义)
Java 编码规范3(编程规约-代码格式)
Java 编码规范4(编程规约-OOP规约)
Java 编码规范5(编程规约-集合处理)
Java 编码规范6(编程规约-并发处理)
Java 编码规范7(编程规约-控制语句)
Java 编码规范8(编程规约-注释规约与其它)
Java 编码规范9(异常日志)
Java 编码规范10(单元测试)
Java 编码规范11(安全规约)
Java 编码规范12(MySQL-建表规约)
Java 编码规范13(MySQL-索引规约)
Java 编码规范14(MySQL-SQL语句与ORM映射)
Java 编码规范15(工程结构)


  1. [强制] 不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。

    • 反例:

      String key = "Id#taobao_" + tradeId; 
      cache.put(key, value);
  2. [强制] long或者Long初始赋值时,使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。

  3. [推荐] 不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护。

    • 尽量不要使用什么Constants 集中定义所有的常量,降低易用性、可读性、维护性。
    • 缓存相关常量放在类CacheConsts下;系统配置相关常量放在类ConfigConsts下。
  4. [推荐] 常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。

    • 跨应用共享常量:放置在二方库中,通常是client.jar中的constant目录下。
    • 应用内共享常量:放置在一方库中,通常是子模块中的constant目录下。

      • 反例(不要浪): 易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量:
      //类A中:
      public static final String YES = "yes";
      //类B中:
      类B中:public static final String YES = "y";

      A.YES.equals(B.YES),预期是true,但实际返回为false,导致线上问题。

    • 子工程内部共享常量:即在当前子工程的constant目录下。

    • 包内共享常量:即在当前包下单独的constant目录下。
    • 类内共享常量:直接在类内部private static final定义。
  5. [推荐] 如果变量值仅在一个固定范围内变化用enum类型来定义。

    • 如果存在名称之外的延伸属性使用enum类型,下面正例中的数字就是延伸信息,表示一年中的第几个季节。
public enum SeasonEnum { 
    SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); 
    int seq; 
    SeasonEnum(int seq){     
        this.seq = seq; 
    } 
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值