1
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?

early return【良いコードの書き方】

Last updated at Posted at 2024-11-04

概要

  • early returnとは、関数内のif文の分岐先などにおいて、できるだけ早くreturnすること
  • ネストが浅くなるので見た目が美しくなるよ
  • 分岐先のロジックを追うとき、return以下は読まなくてよくなるよ

コード例

early returnしない場合

UserForm.cs
class UserForm
{   
    bool VerifyUser(User user)
    {
        bool isVerified;
        if (user.HasBadStatus)
        {
            isVerified = false;
        }
        else
        {
            // 0以下のIDは存在しない
            if (user.ID <= 0)
            {
                isVerified = false;
            }
            else
            {
                isVerified = user.VerificationStatus;
            }
        }
        return isVerified;
    }
}
  • ネストが比較的深く、可読性が低い。
  • 変数isVerifiedがどこで変更されているのかわかりにくい。

early returnした場合

UserForm.cs
class UserForm
{
    bool VerifyUser(User user)
    {
        if (user.HasBadStatus)
        {
            return false;
        }

        // 0以下のIDは存在しない
        if (user.ID <= 0)
        {
            return false;
        }

        return user.VerificationStatus;
    }
}
  • ネストが比較的浅く、可読性が高い。
  • どのケースでfalseが返されるのかが明確である。また、そのようなケースにおいてreturn以下を追わなくてよい。

上記のサンプルコードではあまり恩恵が無いかも知れませんが、関数が長いほど・ロジックが複雑であるほど、early returnによる恩恵は大きいと思います。
(そもそも、そういう場合は関数を分割すべきという話はある)

どんな時に使う?

  • if文の分岐が原因でネストが深いとき
  • ロジックが複雑すぎて、どのようなケースが存在するのか分かりにくいとき
  • 異常系の処理をして関数を終了したいとき
  • ただし、early returnすることにより実行されなくなる処理がある場合は注意
    • 意図しない状態に陥る可能性あり
    • early return時の状態に気を配ろう

記事について

本記事は新卒1年目の新米エンジニアが、良いコードの書き方について学んだことを記録したものです。
もし内容に不備などがあれば、ご指摘いただけるとありがたいです。

1
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
1
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?