1. ホーム
  2. language-agnostic

サイクロマティックコンプレキシティとは?

2023-10-27 09:09:57

質問

時々見かける用語に「Cyclomatic Complexity」というのがあります。このSOでも、「言語XのCCを計算する方法」や「最小のCCでYを行う方法」などの質問を見かけましたが、それが何なのか、よく理解できません。

についてですが NDepend ウェブサイト で、基本的に "メソッド内の判定の数という説明を見ました。if, for, && などの各判定は CC の "score" に+1 されます)。本当にそうなのでしょうか?もしそうなら、なぜこれが悪いのでしょうか?コードを理解しやすくするために、ifステートメントの数をかなり少なくしたいと思うかもしれないことはわかりますが、これは本当にそれのすべてなのでしょうか?

それとも何か深いコンセプトがあるのでしょうか?

どのように解決するのですか?

深い考え方は知りません。 一般的には保守性指数という文脈で考えられていると思います。 特定のメソッド内の分岐が多いほど、そのメソッドの操作のメンタル モデルを維持するのが (一般に) 難しくなります。

より高い循環的複雑性を持つメソッドは、ユニットテストで完全なコードカバレッジを得ることがより困難です。 (ありがとうございます マークW !)

それはもちろん、保守性の他のすべての側面をもたらします。 エラーの発生しやすさ、進歩のしやすさ、などなど。 しかし、核となる概念は非常に単純なものです。