isyumi_netブログ

isyumi_netがプログラミングのこととかを書くブログ

switch case文の後に処理を続けないで

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は必ず書こう。