if文をネスト(入れ子)させずにコーディングする1つの方法です。
私が好んで使うパターンを紹介します。
目次
基本的なパターン
1.デフォルト値を設定。
2.if文は、デフォルト値と異なる場合を判定して保持する。
3.処理は最後の1回だけとする。
ネスト(入れ子)した例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// 変数(Before, Afterで共通) String sex = "man"; int age = 20; String nationality = "Japan"; // Before : ifがネストした(入れ子状態になった)ケース if(nationality != "Japan") { if(age < 20) { System.out.println("外国籍で未成年"); } }else { if(age >= 20) { if(sex.equals("man")) { System.out.println("日本国籍で成年男性"); }else { System.out.println("日本国籍で成年女性"); } } } |
<問題点>
・条件判定がわかりづらい。
・表示の処理が判定ケース毎にあり、修正箇所が分散している。
ネストしていない例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// 変数(Before, Afterで共通) String sex = "man"; int age = 20; String nationality = "Japan"; // After : ネストしないケース //// 初期値 String nationalityStr = "日本"; String ageStr = "成年"; String sexStr = "男性"; //// 判定 if(nationality != "Japan") nationalityStr = "外"; if(age < 20) ageStr = "未成年"; if(sex.equals("woman")) sexStr = "女性"; //// 表示 System.out.println(String.format("%s国籍で%s%s", nationalityStr, ageStr, sexStr)); |
<メリット>
・デフォルト値が必ず設定される。
・条件判定(if文)で設定値を個別に設定するので、単純になる。
・処理をまとめたことで修正が局所化された。
まとめ
・デフォルト値で処理する値を初期化する。
・設定値が変わる場合のみを、if文で個別に判定する。
・処理を1つにすることで、余分な記述を省き、修正箇所の局所化を実現できる。
サンプル
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 26 27 28 29 30 31 32 33 34 35 36 37 |
public class NotNesting { public static void main(String...strings) { // 変数(Before, Afterで共通) String sex = "man"; int age = 20; String nationality = "Japan"; // Before : ifがネストした(入れ子状態になった)ケース if(nationality != "Japan") { if(age < 20) { System.out.println("外国籍で未成年"); } }else { if(age >= 20) { if(sex.equals("man")) { System.out.println("日本国籍で成年男性"); }else { System.out.println("日本国籍で成年女性"); } } } // After : ネストしないケース //// 初期値 String nationalityStr = "日本"; String ageStr = "成年"; String sexStr = "男性"; //// 判定 if(nationality != "Japan") nationalityStr = "外"; if(age < 20) ageStr = "未成年"; if(sex.equals("woman")) sexStr = "女性"; //// 表示 System.out.println(String.format("%s国籍で%s%s", nationalityStr, ageStr, sexStr)); } } |
おすすめ書籍
良いコードを書きたいなと思ったら一度は読んでおきたい本です。
リンク
コメント