返回null,而不是实际的数组或集合,强制要求方法的调用者判断null,这让代码更复杂,不易读。
而且,很多时候,null就是用来表示空。
如下代码:
public static Result[] getResults() {
return null; // Non-Compliant
}
public static void main(String[] args) {
Result[] results = getResults();
if (results != null) { // Nullity test required to prevent NPE
for (Result result: results) {
/* ... */
}
}
}
应该重构为:
public static Result[] getResults() {
return new Result[0]; // Compliant
}
public static void main(String[] args) {
for (Result result: getResults()) {
/* ... */
}
}
这个规则也可以应用于集合:
public static List<Result> getResults() {
return null; // Non-Compliant
}
应该重构为:
public static List<Result> getResults() {
return Collections.EMPTY_LIST; // Compliant
}