#メトリクス
1.メトリクスとは
便利なメトリクスたち
メトリクスとは、モデルを構成するクラスやメソッド、クラス間の関係、パッケージ間の関係などを、
複雑さや結合度、凝集度などの観点から測定し、数値として表すものです。
ソフトウェア開発で用いられるメトリクスには、マイナーなものも含めると非常にたくさんの種類があります。
ただし、あまり高度なメトリクスを勉強しても実践の場でうまく使いこなすことは難しいです。
ですので本資料では便利な3つの指標、「LOC」「CC」「WMC」だけに絞って学習します。
たくさん覚えても使う機会がないと忘れてしまいますしね。
メトリクス利用のメリットデメリット
<メリット>
コードの規模や複雑さ、凝集度(互いに関連する要素のコード内での散らばり具合)、
結合度(クラスやパッケージの独立性の高さ)などを専用のツールを使って計測し、
一定の目標を定めて改善していくことができる。
<デメリット>
たくさん存在するので覚えるのに時間がかかる
2.LOC
規模を大まかに把握できる LOC
**LOC(Line of Code)**は、その名の通りプログラムの行数を表します。
たとえば、中身が200行のプログラムの場合、LOCは200です。
ただし、空行やカッコだけの行など、プログラムの本質とは関係のない行をカウントしないなど、
いくつかの数え方があります。
また、行数が多い場合は1000行単位で数えるKLOCを使うこともあります。
(80000行のプログラムは80KLOC)※今回資料では覚える必要はありません。
LOCの特徴
コードの書き方や数え方によって容易に増減するメトリクスであるため厳密な運用には向きません。
あくまで規模を大まかなとらえるための道具と割りきって使いましょう。
3.CC
メソッドの複雑さを示すCC
CC(Cyclomatic Complexity)はトーマス・マッケーブという人が開発したメトリクスで、
「マッケーブの循環的複雑度」とも言います。
CCはある特定のメソッドの中身がどれだけ複雑なのかを表す1以上の数値であり、
大きいほど複雑であることを示しています。
具体的には、ifによる分岐やforによるループが多く使われるほど高い数値を示します。
あまりにも複雑なメソッドは、読みづらく、バグになりやすく、後々の修正も大変です。
開発中の各メソッドについて、CCが一定以上に抑えられているかチェックし、
あまりにCCが大きいものは修正したほうが良いこともあります。
CCの特徴
高ければ高いほどバグが混入する確率も上がるので、修正をする際に使うこともあると
考えられます。
4.WMC
クラス複雑度を示すWMC
**WMC(Weighted Method Per Class)**は、あるクラスに含まれる全メソッドのCCを合計した値であり、
クラスの複雑度を表します。
WMCが異常に大きい値を示しているクラスは、複数に分割できるかを考えたほうがよさそうです。
WMCが大きい時の対応
・メソッドの機能を分割する
・構造を簡単にできるか検討する
WMCの特徴
CCを合計した値になるので、大きければ大きいほど自分が開発しているものが
複雑になりすぎているか、読みにくいかなどがわかる。
※どうでもいい方は読み飛ばしてください
<筆者の所感>
実際に開発現場で自分が製造を任された際にメトリクスも気を付けて製造しようと思った。