ソースコードの複雑さの評価

Understandのメトリクス機能は、ソースコードの品質を定量的に評価する機能です。
Understandは70種類以上の項目で指標値を算出します。
そして、その中で最もよく使われる項目の一つが「Cyclomatic複雑度」です。

Cyclomatic複雑度(Wikipedia)

Cyclomatic複雑度は、関数内部の分岐の数などをパラメーターとして計算し、関数ごとの内部処理の複雑性を算出するものです。
つまり、この値が高ければ高いほど複雑な関数となっており、可読性や保守性が落ちていることを分析できます。

例えば、この処理フローはCyclomatic複雑度が5の関数のものです。

この程度の複雑さであれば、後から他の人がソースコードを読んで内容把握や変更を行おうとした場合でも、さほど難しくない作業となります。また、より網羅的な単体テストを実施しようとした場合のテストケースも十分に検討できる範囲の数です。

これはCyclomatic複雑度が10の関数です。
先ほどより複雑になっていますが、十分メンテナンスが可能な構造です。

これはCyclomatic複雑度が20の関数です。
内容把握や変更が難しく、網羅的なテストケースの検討も困難になっています。

これはCyclomatic複雑度が40の関数です。
内容把握や変更作業は非常に困難で、変更後に不具合が発生するリスクが非常に高まっています。また、網羅的なテストを行いたい場合、この関数だけでかなりの数のテストケースを検討する必要が出てきます。

このように、「保守性」という観点でソフトウェアの品質を考える場合に、Cyclomatic複雑度のような指標で定量的に分析することが有効になります。

多くの開発が既存の資産を流用、再利用した開発へと変わってきている中で、今後数年間使い続けるソフトウェアを維持するために、このような指標で品質を計測してみてはいかがでしょうか。

タイトルとURLをコピーしました
Close Bitnami banner
Bitnami