リファクタリング

なぜ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を使わないことでパフォーマンスが下がる場合の対処法

  目次 状況対処法10億回のfor文でパフォーマンス評価else 有りelse 無し結果(else無しは一定して遅い)パフォーマンス改善else 無し AND メソッド切り出しして早期リタ …

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

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

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

if文をネスト(入れ子)させずにコーディングする1つの方法です。 私が好んで使うパターンを紹介します。   目次 基本的なパターンネスト(入れ子)した例ネストしていない例まとめサンプル 基本 …

SpringFramworkの良書

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

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