こんなメソッドを書こうとします。
@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);
}
もちろん時と場合によって書き方を選ぶんでしょうが、個人個人で好きな書き方とかはありそうですねー。