最近からSonarLint for Eclipseを使用していますが、それは非常に役立ちました。しかし、それは私に循環的複雑さについての疑問を投げかけました。
SonarLintは許容できるCCを10と見なし、私がそれを超えている場合があります(約5または6ユニット)。これらの部分は、値がさまざまな変数に依存するマッパーに関連しています。次に例を示します。
- フィールドAは文字列sAに依存しています。
- フィールドBは文字列sBに依存しています。
- フィールドCはString sCに依存しています。
- など...
if
各フィールドに置くこと以外に選択肢はありません。これは(幸いにも)私の選択ではありませんが、自分で変更できない既存の複雑なシステムです。
私の質問の核心は、次のとおりです。単一の方法で CCが高すぎないことがなぜ重要なのですか。いくつかの条件を1つまたは複数のサブメソッドで移動して複雑さを軽減しても、全体的な機能のコストは削減されず、問題が別の場所に移動するだけだと思いますか?
(もしあれば、小さな間違いのため申し訳ありません)。
編集
私の質問は、グローバルな循環的複雑度についてではなく、単一のメソッドの複雑度とメソッドの分割についてのみです(申し訳ありませんが、私が正確に何を意味するかを説明するのに大雑把な時間を費やしています)。すべてのサブメソッドを実行するだけの「スーパーメソッド」にまだ属しているのに、条件を小さなメソッドに分割して、アルゴリズムに複雑さを加えることが許されるのはなぜですか。
ただし、2番目のリンク(アンチパターンについて)は非常に役立ちます。