Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
13
Help us understand the problem. What is going on with this article?
@shoma2da

否定形の書き方いろいろ

More than 5 years have passed since last update.

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

@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);
}

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

13
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
shoma2da
CEO兼エンジニアしてます

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
13
Help us understand the problem. What is going on with this article?