switch case文の中で変数に代入すると、非常に読みづらいコードになる。そのSwitch文の目的がわかりづらいしこのSwitch文がどの変数を書き換える可能性があるかを把握しづらいからだ。しかし、結局Switch文は何か値を返すために書いてある場合がほとんどである。であればその値を返す関数を作って欲しい。下のコードを見て欲しい。これは英語で入って来た曜日を日本語でPrintするコードだ。
void printJAString(String week) {
String ja;
switch (week) {
case "monday":
ja = "月";
break;
case "tuesday":
ja = "火";
break;
case "wednesday":
ja = "水";
break;
case "thursday":
ja = "木";
break;
case "friday":
ja = "金";
break;
case "saturday":
ja = "土";
break;
case "sunday":
ja = "日";
break;
}
print(ja);
}
なんどもjaというコードに代入している。もしコードがもっと複雑になり、ja以外のいろんな変数に代入していたらどうなるだろうか。それよりはこのように最終的に一つの値を返す関数にして欲しい。
void printJAString(String week) {
String ja = toJAString(week);
print(ja);
}
String toJAString(String week) {
switch (week) {
case "monday":
return "月";
case "tuesday":
return "火";
case "wednesday":
return "水";
case "thursday":
return "木";
case "friday":
return "金";
case "saturday":
return "土";
case "sunday":
return "日";
}
}
このようにすることで「どうせtoJAString関数は値を一個返すだけだ。ということは読み飛ばしてもいい」と判断できる。
ぜひ、Switch文で変数を代入するのではなく、Switch文を包んだ関数で値を返そう。
補足
本題と関係ないので省略したが、switch文のdefaultは必ず書こう。