我可以确定名为 returnlist() 的“我的代码”永远不会返回 null。因此,当我在增强的 for 循环中循环时,我不做任何空指针检查。但是,从维护的角度来看,这似乎不是一个好的做法,因为将来有人可能会无意中修改代码库,或者有人会覆盖这个调用,而被覆盖的函数可能不够谨慎,无法返回空集合。
public class ExtendedForLoop {
public List<Integer> returnList() {
// compute.
if list == null ? Collections.emptyCollections : list;
}
public static void main(String args[]) {
for (Integer i : returnList()) {
System.out.println(i);
}
}
因此,使问题具有通用性,该问题旨在了解在何处绘制权衡线的最佳实践。我完全理解这种情况没有明确的规则,只是寻求最佳实践。
在自己编写的代码中添加过多的检查会增加混乱,但可以确保其免受未来修改的影响。
减少检查,因为“你知道它不会返回 null”使代码干净,但我们面临意外修改的风险。