ネストを減らすために「if」文を反転する 質問する

ネストを減らすために「if」文を反転する 質問する

私が走ったときリシャーパー私のコードでは、例えば次のようになります:

    if (some condition)
    {
        Some code...            
    }

ReSharper は上記の警告 (ネストを減らすために「if」ステートメントを反転する) を表示し、次の修正を提案しました。

   if (!some condition) return;
   Some code...

なぜそれが優れているのか理解したいです。メソッドの途中で「return」を使用することは、「goto」のように問題があると常に思っていました。

ベストアンサー1

それは美的であるだけでなく最大ネストレベルメソッド内では、メソッドが理解しやすくなるため、一般的にはプラスと見なされます(実際、多くの 静的 分析 ツールコード品質の指標の 1 つとしてこれの尺度を提供します。

一方、メソッドに複数の終了ポイントが存在することになりますが、これは別のグループの人々がやってはいけないことだと考えています。

個人的には、ReSharper と最初のグループに同意します (例外のある言語で「複数の終了ポイント」について議論するのは愚かだと思います。ほとんど何でも例外をスローする可能性があるため、すべてのメソッドに多数の潜在的な終了ポイントがあります)。

パフォーマンスに関して: 両方のバージョンは、すべての言語で同等であるはずです(IL レベルではなくても、コードのジッターが終わった後は確実に同等です)。理論的にはこれはコンパイラに依存しますが、実際には、今日広く使用されているコンパイラはどれも、これよりもはるかに高度なコード最適化のケースを処理できます。

おすすめ記事