行数
- 行数
- 最も基本的なメトリック。プログラム規模を推し量る。
- 関数(メソッド)、モジュール(クラスとかコンポーネントとか)、ファイル……と、単位はさまざま。
- それぞれの個別値のほか、平均、分散や標準偏差なども有用。
- 単独では意味がないが、障害(欠陥)の数や密度と合わせると、何かしらの傾向が見えてくる可能性あり。
サイクロマチック複雑度
- サイクロマチック複雑度
- C = e - n + 2p
- オイラーの多面体定理から。
- V - E + F = 2
- 複雑度Cは「多面体の面の数」に相当する……が、このことはあまり重要ではあるまい。頂点と辺が多ければそのふたつが成す面も増える理屈。
- コードの連接をe(edge), 分岐点と合流点をn(node, vertex)と見ると、プログラムは(有向)グラフを形成する。
- 端的にはノード、つまり分岐の数。プログラムの開始点と終了点をノードと数える点に注意。
- 分岐がゼロ個の場合、e = 1, n = 2 からC = 1。
- ノードがひとつ増えればCは1増える。
入れ子の深さ
- 凝集度とか結合度とか。
- OOP的には
- 継承の深さ(DIT: Depth of Inheritance Tree)
- サブクラスの数(NOC: Number of Children)
- RFC: Responses for a Class。他のクラスに送るメッセージ数?
- CBO: Coupling between Object classes。他のクラスのインスタンスやメソッドを参照している数
- LCOM: Lack of Cohesion in Methods。
最終更新:2008年04月09日 14:30