🤔

switchのreturnはこうした方が分かりやすいと感じる🤔

に公開

はじめに

Flutter、Dartで開発をしていてふと思ったことを記事にしてみようと思います。

今回は表題の通りswitchreturnについてです。

よくある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を書いているので、

こちらの方が私は内容が頭に入りやすく、イメージもしやすい感じがしています。

コードの見た目もスッキリしていて、個人的にはこっちが好みです😄

もちろんこれは私の好みによるものかと思われますので、

前者のコードでも全然問題はないかと思われるのですが、

もしこの書き方が参考になりましたら幸いです🙇‍♂️

Discussion