《Effective Java》读书笔记——代码习惯

<h2>一.返回零长度的数组或者集合,而不是null</h2>

下面这段代码判断如果一个成员变量集合大小为0,则返回了一个空对象

private final List<Cheese> cheeseInStock = ...;

public Cheese[] getCheeses() {
    if (cheesesInStock.size() == 0) {
        return null;
    }
}

<p>然而这种写法并不合适,返回类型为数组或集合的方法没有什么理由返回null。因为当你的方法返回为null时,调用者不仅要判断你返回的结构长度是否为空,同时还要判断你返回的对象可能本身就是空,一旦不注意很有可能造成NullPointerException,就如下面代码所示。正确的做法应该返回一个零长度的数组或者集合。</p>

private WordClusterVO convert(WordClusterExtension word) {
    if (word.getSimilaryWord() == null || word.getSimilaryWord().size() == 0) {
        // 没有相似词的词簇是异常情况
        return null;
    }

<p>这种写法很大程度都是从C带来的,因为C语言中习惯于返回null,进行指针的判断,要习惯于Java就必须改掉这些习惯。返回的对象应当这样写:</p>

public Cheese[] getCheeses() {
    if (cheesesInStock.isEmpty()) {
        return Collections.emptyList();  //Always returns same list
    } else {
        return new ArrayList<Cheese>(cheesesInStock);
    }
}

<h2>二.坚持使用Override注解</h2>

对于想覆盖的方法一定要使用@Override注解,否则可能得到的结果是方法的重载而不是覆盖。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容