阿里编程规约理解
1.Magic values,except for predefined,are forbidden in coding
反例:
String key = "Id#taobao_" + tradeId;
cache.put(key,value);
理解:
魔法值最主要导致的问题是可读性问题,而且同一个魔法值出现多次也可能表示不同的意思。如下例:
List<User> user = new ArrayList(100)<>;
List<Price> price = new ArrayList(100)<>;
那么我们这里的100到底表示什么意思?user和price的100都是同样的意思吗?这里就造成了理解上的障碍,我们换另一种方式来创建此数组
int static final MAX_USER_NUMBER = 100;
int static final MAX_Price = 100;
List<User> user = new ArrayList(MAX_USER_NUMBER)<>;
List<Price> price = new ArrayList(MAX_Price)<>;
这种书写方式我们就可以明确的知道user的100表示的是最大用户数量,price的100表示最高价格。
- 不使用魔法数值,使用带名字的 Static final 或者 enum 值
- 原则上 0 不用于魔法值,这是因为 0 经常被用作数组的最小下标或者变量初始化的缺省值。
2.使用System.currentTimeMillis()代替new Date().getTime()
两者都是用来获取当前时间的秒数,之所以要使用System.currentTimeMills()
来代替new Date().getTime()
,是因为new Date()
实质就是调用调用System.currentTimeMills()
然后再将其转换为日期类型,再通过getTime()
又将其转换为秒,无意义的操作降低了性能
public Date() {
this(System.currentTimeMillis());
}