阿里编程规约理解

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表示最高价格。

  1. 不使用魔法数值,使用带名字的 Static final 或者 enum 值
  2. 原则上 0 不用于魔法值,这是因为 0 经常被用作数组的最小下标或者变量初始化的缺省值。

2.使用System.currentTimeMillis()代替new Date().getTime()

两者都是用来获取当前时间的秒数,之所以要使用System.currentTimeMills()来代替new Date().getTime(),是因为new Date()实质就是调用调用System.currentTimeMills()然后再将其转换为日期类型,再通过getTime()又将其转换为秒,无意义的操作降低了性能

public Date() {
    this(System.currentTimeMillis());
}
posted @ 2020-04-17 10:05  LinM狂想曲  阅读(491)  评论(0编辑  收藏  举报