1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

コードの書き方について思うこと: if else と if

Last updated at Posted at 2019-07-22

開発をしていて、コードの書き方について思うこと、感じたことを書いています。

思うこと

同じ動作でもコードの書き方が複数あるとき、コードの書き手は「読み手を意識して、意図に合わせて、書き方を決める」といいかもと思います

if else と if のどちらでも書ける時、if elseの方がいいかも

ifの中でreturnするコードでは、if elseを使った方が、意図が伝わりやすいと思います。

func immigration() {
    if nationality == "japan" {
        // 日本人用の処理
        // ...
        return
    }
    // 日本人以外の処理
    // ....
    return
}

if elseを使ったとき

func immigration() {
    if nationality == "japan" {
        // 日本人用の処理
        // ...
    } else {
        // 日本人以外の処理
        // ....
    }
}

そう思う理由

コードを読む時、最初に、全体の流れを把握する人が多いと思います。ifの中でreturnするコードでは、 全体の流れを把握するときに、ifの中のreturnに気づかずに、 nationlaity == "japan" のときに特別な処理をして、「日本人以外の処理」に戻ってくると勘違いしてしまうことがあります。少なくとも、僕は、ifでelseが無い場合、本流の処理に入る前の特別な処理が書かれていることを想定して読むので、勘違いしがちです。

特に、整理されていないコードだと勘違いしがちです。少し恣意的かもしれませんが、以下のようなコードなら、勘違いが起きることもあると思っていただけるかと…
Screen Shot 2019-07-22 at 20.03.37.png

if elseの方が全体の流れを把握する時に勘違いしづらいと思います。(コードが整理されていない状態だとつらいかもしれませんが…)
Screen Shot 2019-07-22 at 20.04.00.png

最後に

以下のイメージを持って、意図に応じて使い分けていただくと、少し読み手に優しいコードになると思います。

  • if: 本流の処理に入る前の特別な処理
  • if else: 分岐して本流に合流しない処理
1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?