【C++学習|豆知識】コードの「読みやすさ」を左右する!if文のネストを賢く扱うテクニック

導入

プログラミングを始めたばかりの方が最初にぶつかる壁の一つが「if文のネスト(入れ子構造)」です。条件の中にさらに条件を記述することで、複雑な判断をプログラムにさせることができます。しかし、深くネストしすぎるとコードが右側にどんどん寄ってしまい、非常に読みづらく、バグの温床になりがちです。本記事では、基本的な使い方と、現場で好まれる「読みやすい書き方」について解説します。

基礎知識

if文とは、特定の条件が満たされたときにだけ特定の処理を実行する「制御構造」です。ネストとは、あるif文のブロック({ }の中)に、別のif文を記述することを指します。これにより、「AかつBの場合」といった複合的な条件を段階的に評価できます。

実装/解決策

ネストを深くしないための最も有効なテクニックは、「早期リターン(ガード節)」という考え方です。条件が満たされない場合にすぐに処理を終了(return)させることで、elseを使わずにネストを浅く保つことができます。これにより、コードの論理構造がフラットになり、メンテナンス性が劇的に向上します。

サンプルプログラム

以下のコードは、ネストが深い悪い例と、早期リターンを使って改善した良い例の比較です。

include <iostream>

// ネストが深い例(可読性が低い)
void processDeep(int x, int y) {
    if (x > 0) {
        if (y > 0) {
            std::cout << "xもyも正です。" << std::endl;
        }
    }
}

// 早期リターンを使った例(読みやすい)
void processFlat(int x, int y) {
    // 条件を満たさない場合は先に処理を終える
    if (x <= 0) return;
    if (y <= 0) return;

    // ここまで到達すれば確実に両方正
    std::cout << "xもyも正です。" << std::endl;
}

int main() {
    processDeep(10, 20);
    processFlat(10, 20);
    return 0;
}

応用・注意点

現場でコードを書く際は、「ネストは最大でも2階層まで」というルールを設けているチームも少なくありません。もし3階層以上のネストが必要になった場合は、その処理自体を別の関数に切り出せないか検討してみてください。また、論理演算子(&&や||)を活用することで、if文を一つにまとめることも可能です。可読性を常に意識し、後から読む人が迷わないコードを目指しましょう。

コメント

タイトルとURLをコピーしました