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

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

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

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

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

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

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

ベストアンサー1

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

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

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

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

おすすめ記事