結論
else、else ifは、判定条件の理解を複雑に見せてしまうため、
ifのみで実装することが望ましい。
性別を判定する例
Before: else句を使用した場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Before: else句を使用した場合 String sex = "man"; String sexStr; if(sex.equals("man")) { sexStr = "男性"; }else if(sex.equals("woman")){ sexStr = "女性"; }else if(sex.equals("other")){ sexStr = "その他"; }else { sexStr = "未設定"; } System.out.println(sexStr); |
<メリット>
・多くの人が書くので、else句を使うことに心理的な安心感がある。
<デメリット>
・判定と結果がぱっと見でわかりづらい。
・判定を全て見なければ、何が設定されるか理解しずらい。
After: else句を使用しない場合
1 2 3 4 5 6 7 8 |
String sex = "man"; String sexStr; sexStr = "未設定"; if(sex.equals("man")) sexStr = "男性"; if(sex.equals("woman")) sexStr = "女性"; if(sex.equals("other")) sexStr = "その他"; System.out.println(sexStr); |
<メリット>
・判定と結果が1行なので、視覚的にも判断しやすい。
・条件に当てはまる場合のみ再設定される。
<デメリット>
・初心者は戸惑う(一般的な書籍では、elseを使ったコーディングを学ぶため)
日本語の会話に変換すると?
elseを使った場合と、ifのみの場合のコーディングを、
日本語の会話風に変換するとどうなるかをみてみましょう。
Aさん:elseを使って説明する
Bさん:ifのみで説明
Aさんの説明:elseあり
もし、”man” だったら「男」にして、
でも、もし”woman” だったら「女」にして、
でも、もし”other” だったら「その他」にして、
でも、どれでもなかったら、「未設定」にします。
Bさんの説明:ifのみ
まず、「未設定」とします。
“man” だったら「男」
“woman” だったら「女」
“other” だったら「その他」
とします。
AさんとBさんは同じことを説明していますが、
どちらの方がわかり易いでしょうか?
まとめ
・ifのみでコーディングすると判定と結果が明確になりやすい。
・コードを日本語の会話に変換するとわかり易さが感じられる。
コード全体
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
public class NotElse { public static void main(String...strings) { String sex = "man"; String sexStr; // Before: else句を使用した場合 if(sex.equals("man")) { sexStr = "男性"; }else if(sex.equals("woman")){ sexStr = "女性"; }else if(sex.equals("other")){ sexStr = "その他"; }else { sexStr = "未設定"; } System.out.println(sexStr); // After: else句を使用しない場合 sexStr = "未設定"; if(sex.equals("man")) sexStr = "男性"; if(sex.equals("woman")) sexStr = "女性"; if(sex.equals("other")) sexStr = "その他"; System.out.println(sexStr); } } |
コメント