はじめに
Flutter、Dartで開発をしていてふと思ったことを記事にしてみようと思います。
今回は表題の通りswitch
とreturn
についてです。
今回の内容はどちらかと言うと私の好みの問題なので、
それを踏まえていただけましたら幸いです。
よくあるswitch + return
関数やメソッドの中でswitch
文を使って条件分岐を行い、
それに基づいてreturn
を返す場合においては以下のようにも書けます。
String getGreetingByTime(String timeOfDay) {
switch (timeOfDay) {
case 'morning':
return 'おはようございます';
case 'afternoon':
return 'こんにちは';
case 'evening':
return 'こんばんは';
default:
return 'こんにちは(時間帯不明)';
}
}
void main() {
print(getGreetingByTime('morning'));
print(getGreetingByTime('evening'));
print(getGreetingByTime('night'));
}
もちろんこのコードでも動きますし、特に問題はないと思われます。
ただこの関数やメソッドのロジックがもっと長大で複雑であり、
実装されているファイルの行数も長かった場合、
または同じようなswitch + return
の書き方をしている箇所がいくつもあると、
ちょっと私は読みづらく感じてしまいます。。。😅
return
がスコープの中の方、深い方にあると、
ぱっと見た時のコードの入りやすさと言いますか、
なんだか脳内にスッキリ入っていかないと言いますか、
処理のイメージがクリーンにしづらい感じがするんですよね💦
開発をしていると結構長い時間コードを読むかと思われるのですが、
ちょっとでも認知上の負荷と言いますか、脳の負荷と言いますか、
すんなり頭に入りやすい、イメージしやすい方が助かるかなぁと思っています。。。
先にreturnから書いてみた💪
それを踏まえると、私はreturn
が先にあった方が読みやすい感じがしていまして、
ちょっとリファクタリングしてみました🎶
String getGreetingByTime(String timeOfDay) {
return switch (timeOfDay) {
'morning' => 'おはようございます',
'afternoon' => 'こんにちは',
'evening' => 'こんばんは',
_ => 'こんにちは(時間帯不明)',
};
}
void main() {
print(getGreetingByTime('morning'));
print(getGreetingByTime('evening'));
print(getGreetingByTime('night'));
}
処理内容は全く同じなのですが、先にreturn
を書いているので、
こちらの方が私は内容が頭に入りやすく、イメージもしやすい感じがしています。
コードの見た目もスッキリしていて、個人的にはこっちが好みです😄
もちろんこれは私の好みによるものかと思われますので、
前者のコードでも全然問題はないかと思われるのですが、
もしこの書き方が参考になりましたら幸いです🙇♂️