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

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

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

private final List cheeseInStock = ...;

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

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

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

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

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

二.坚持使用Override注解

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

你可能感兴趣的:(《Effective Java》读书笔记——代码习惯)