リファクタリング

なぜ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


関連記事

else句を使わないでコーディングする方法

ThoughtWorksアンソロジーの第5章 オブジェクト指向エクササイズで取り上げられている、 「2.else句を使わない」で私が使っている方法です。 else句を使っているパターンを、使わないパタ …

【Java】Enumを使って変更に強いコーディングをする!

概要 仕事でコード値の判定が色んなところに散らばってしまった後に、コード値の定義を変更しなければいけなくなった状況が起こりました。 Enumで定義していれば変更箇所はEnum定義だけでよかったなぁ~と …

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

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

あなたが読み難いコードを書いてしまう理由

はじめに 読みやすいコードを書きたい人と願う方のために執筆しました。 誰もが良いコードを書きたいと願っているはずだからです。(と私は信じています) というもの、後で自分が読み直した時、誰かにレビューを …

【Java】重複しないリストはSetを使う!(用途別 3種類)

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

記事を探す

SpringFramworkの良書

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

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