リファクタリング

なぜelse、else ifを書かないようにすべきなのか?

投稿日:

 

結論

else、else ifは、判定条件の理解を複雑に見せてしまうため、
ifのみで実装することが望ましい。

 

性別を判定する例

Before: else句を使用した場合

<メリット>
・多くの人が書くので、else句を使うことに心理的な安心感がある。

<デメリット>
・判定と結果がぱっと見でわかりづらい。
・判定を全て見なければ、何が設定されるか理解しずらい。

 

After: else句を使用しない場合

<メリット>
・判定と結果が1行なので、視覚的にも判断しやすい。
・条件に当てはまる場合のみ再設定される。

<デメリット>
・初心者は戸惑う(一般的な書籍では、elseを使ったコーディングを学ぶため)

 

日本語の会話に変換すると?

elseを使った場合と、ifのみの場合のコーディングを、
日本語の会話風に変換するとどうなるかをみてみましょう。

Aさん:elseを使って説明する
Bさん:ifのみで説明

Aさんの説明:elseあり

もし、”man” だったら「男」にして、
でも、もし”woman” だったら「女」にして、
でも、もし”other” だったら「その他」にして、
でも、どれでもなかったら、「未設定」にします。

Bさんの説明:ifのみ

まず、「未設定」とします。
“man” だったら「男」
“woman” だったら「女」
“other” だったら「その他」
とします。

AさんとBさんは同じことを説明していますが、
どちらの方がわかり易いでしょうか?

 

まとめ

・ifのみでコーディングすると判定と結果が明確になりやすい。
・コードを日本語の会話に変換するとわかり易さが感じられる。

 

コード全体

 
最後までお読み頂き、ありがとうございました!
ご意見・ご要望がありましたら、遠慮なくコメント下さい!
もし内容が良かったらランキング評価を頂けると励みになります(^^)

ランキング評価する

-リファクタリング
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

【Java】HashSet、LinkedHashSet、TreeSetの違い

概要 重複しないリストは、「Setに格納することで重複を除外してくれる」というのは多くの記事で紹介されています。 ここでは、Setに格納した後のデータの並び順も考慮したいという要件に対応するために、3 …

メソッドを切り出すメリット。リーダブルなコードで行こう!

概要 大きなクラス、長いメソッドを書いたり読んだりしていて、ロジックが追えなくなってきています。 私の周りではすごく理解が良く、長い処理でも追っていける人がいますが私はそうではありません。 私はごくご …

【Java】Optionalが処理できないならデフォルト値を返そう

概要 Optionalはnullである可能性を明示的に返してくれる便利なコンテナ・オブジェクトです。 if(obj == null)… といったことをしなくてよくなったのは素晴らしいことだ …

if文をネスト(入れ子)させずにコードを書く方法

if文をネスト(入れ子)させずにコーディングする1つの方法です。 私が好んで使うパターンを紹介します。   基本的なパターン 1.デフォルト値を設定。 2.if文は、デフォルト値と異なる場合 …

elseを使わないことでパフォーマンスが下がる場合の対処法

  状況 前回記事(なぜelse、else ifを書かないようにすべきなのか?)のような ifのみで判定されており、それがfor文等の繰り返し処理の中にある場合は パフォーマンスが下がる。 …

■運営者プロフィール
IT業界10年のエンジニア。
PHP -> VBA -> Javaと渡り歩いてきて、今はJavaをメインにフリーランスエンジニアとして活躍中!

[保有資格]
・Java SE 11 Gold

一度はエンジニアを辞めざるを得なかった私が再びエンジニアとして復活した数奇な物語

SpringFramworkの良書

■おすすめ教材
Javaの基本を学んだ人が、次のステップとして読む本(中級者向け)

※SpringはJavaのFrameworkの1つです。
変更のしやすさ、保守性の高さが特徴です。