2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

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

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

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

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

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

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

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?