LoginSignup
10
13

More than 5 years have passed since last update.

否定形の書き方いろいろ

Posted at

こんなメソッドを書こうとします。

@Nullable
public Element getFirst(List<Element> list) {
    //TODO リストが空じゃなかったら最初の要素を返す
    return null;
}

パターン1:普通に否定形で書く。

一番良く見る書き方な気がするんですが、再度コードを見た時に!を見落とすことが多くてあまり好きになれません。

@Nullable
public Element getFirst(List<Element> list) {
    if (!list.isEmpty()) {
        return list.get(0);
    }
    return null;
}

パターン2:ちょっと見やすく否定形で書く

!ではなく== falseと書いてみました。
個人的にはこちらの書き方が好きで多用してます。
どこかの本でも可読性の面でこんな書き方をしていたような?(違うかも)

@Nullable
public Element getFirst(List<Element> list) {
    if (list.isEmpty() == false) {
        return list.get(0);
    }
    return null;
}

パターン3:否定形を使わずにelseで書く

ifの条件の中を反転させないように頑張って書くとするとこのようになるでしょうか。
僕個人がやることはほぼないですが、ごくたまに見かけることがある気がします。
今回の場合は例が簡単すぎて単純に冗長なコードになってますがw

@Nullable
public Element getFirst(List<Element> list) {
    if (list.isEmpty()) {
        //do nothing!
    } else {
        return list.get(0);
    }
    return null;
}

パターン4:早期リターンする

先に例外ケースなどをつぶしてからやりたい処理に入る書き方ですね。
今回はかなりコードが短いので良い感じかと思います。
ただしコードが長くなってくるとifの先の「条件を抜けた後の状態」を把握しながら書くことになるので場合によっては少しキツいかもです。

@Nullable
public Element getFirst(List<Element> list) {
    if (list.isEmpty()) {
        return null;
    }
    return list.get(0);
}

もちろん時と場合によって書き方を選ぶんでしょうが、個人個人で好きな書き方とかはありそうですねー。

10
13
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13