zoukankan      html  css  js  c++  java
  • alibaba-Java开发手册心得-一编程规约-2常量定义

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

    反例: String key = "Id#taobao_" + tradeId; cache.put(key, value);

    魔法数字的例子

      int priceTable[] = new int[16]; //ERROR:这个16究竟有何含义呢?

      使用了带名字的数值的例子

      static final int PRICE_TABLE_MAX = 16; //OK:带名字

      int price Table[] = new int [PRICE_TABLE_MAX]; //OK:名字的含义是很清楚的

    2. 【强制】long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。

    说明:Long a = 2l; 写的是数字的21,还是Long型的2?

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

    如:缓存相关的常量放在类:CacheConsts下;

    系统配置相关的常量放在类:ConfigConsts下。

    说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。

    4. 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。

    1) 跨应用共享常量:放置在二方库中,通常是client.jar中的constant目录下。

    2) 应用内共享常量:放置在一方库的modules中的constant目录下。

    反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量: 类A中:public static final String YES = "yes"; 类B中:public static final String YES = "y"; A.YES.equals(B.YES),预期是true,但实际返回为false,导致线上问题。

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

    4) 包内共享常量:即在当前包下单独的constant目录下。

    5) 类内共享常量:直接在类内部private static final定义。

    5. 【推荐】如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类

    下面正例中的数字就是延伸信息,表示星期几。

    正例:public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}

  • 相关阅读:
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 697 数组的度(类似于数组的map)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 696 计数二进制子串(暴力)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    Java实现 LeetCode 695 岛屿的最大面积(DFS)
    PHP serialize() 函数
    PHP print_r() 函数
  • 原文地址:https://www.cnblogs.com/mmd233/p/7089593.html
Copyright © 2011-2022 走看看