早期リターンして認知負荷を下げよう

if ~ elseif ~ elseなどで複数条件を処理しているコードを、エンジニアなら誰しも一度は見たことがあると思います。

その条件が何層もネストしているコードにもお目にかかったこともあるでしょう。

今回はそういうコードを、早期リターンを使って読みやすくしてみたいと思います。

早期リターン実施前

/**
 * ユーザーの参加資格をチェックする関数
 */
function isUserEligible($user) {
    // 18歳以上の場合
    if ($user['age'] >= 18) {
        // アクティブの場合
        if ($user['active']) {
            // サブスク契約中の場合
            if ($user['hasPaidSubscription']) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}

早期リターン実施後

/**
 * ユーザーの参加資格をチェックする関数
 */
function isUserEligible($user) {
    // 18歳未満の場合
    if ($user['age'] < 18) {
        return false;
    }

    // アクティブじゃない場合    
    if (!$user['active']) {
        return false;
    }
    
    // サブスク契約していない場合
    if (!$user['hasPaidSubscription']) {
        return false;
    }
    
    // すべての条件をクリア
    return true;
}

このようにネストしていた条件を反転してやって、条件に満たない場合はその時点でリターンしてやると、コードがすっきりとして処理が追いやすく、脳のメモリも節約できる。