GTM-MML4VXJ
Skip to main content

English

Japan

  1. ホーム >
  2. 商品一覧 >
  3. PGRelief C/C++ >
  4. 機能 >
  5. McCabeの複雑度とは

静的解析による品質向上支援ツール「PGRelief C/C++」 McCabeの複雑度とは

McCabeは、プログラムの複雑さは制御構造の複雑さで定まると提唱し、この複雑さは基本パスの数で数えるとしました。 複雑度V(G)はプログラム中の判定条件の数をπとすると、[ V(G)=π+1 ] で求めることができます。

複数度にはTYPE1とTYPE2の2種類があります。 TYPE1では判定条件を数えるとき、if条件節にあるような複合条件(&&や||など)を無視するのに対し、TYPE2では別条件として数えます。

分かりやすいプログラムにするためには、各関数の複雑度TYPE1の値を20以下におさえると良いでしょう。一般的には20を超えると理解に時間がかかり、50を超えると作成者以外はほとんど理解不可能になると言われています。

複雑度の算出例

プログラム
 

TYPE1は(a)のif条件節にあるような複合条件(&&や||を使用した条件)を分岐数1と数えます。 上の例は、π=3であり、複数度は4となります。

TYPE2は複合条件の個々の条件数も分岐数と数えます。上の例は、π=4であり、複雑度は5となります。下図は、TYPE2におけるパスを示したものです。パスの数が5であることが分かります。

フロー