实践中的重构08_集合判空时的可读性

代码的可读性应该还是着重强调的,毕竟,代码是给人读的。如
if(null==a)

这样的代码,看的出是从c惯用法继承下来,试着读一下,当null不为a,则如何如何。至少我读起来有点别扭。我还是喜欢这样的形式,当a不为null,则如何如何。
当然,更厉害的是经常看到如下的片段
if(list.size()==0)
if(list.size()<1)

ok,size==0这个我还可以想的通为什么这么写,但是<1这种写法真的让人无语。
if(list.isEmpty())

这样当然更进一步。为什么呢,因为使用size是因为我们知道该类的内部实现,判断时涉及了类的实现,而isEmpty只是语义上判断一个列表是否为空,不涉及实现细节。
还有一种挺常见的,好的做法是集合类引用对象永远不用判null。
    if(list!=null && !list.isEmpty()){  
      // do something.  
    }  

我们可以把对list的判null和判空抽出来,变成
    if(!CollectionUtil.isEmpty(list)){  
      // do something.  
        }

更进一步。
    if(CollectionUtil.isNotEmpty(list)){  
      // do something.  
    }  

问题在于,null和empty在特定的上下文中真的是一样的吗。

你可能感兴趣的:(游戏,编程,脚本,XP,招聘)