【プログラマー必見!?】サイクロマティック複雑度とは? ソフトウェア測定法の公式! 循環的複雑度って何の役に立つの? No.118
今回は、ソフトウェア測定法の一種である「サイクロマティック複雑度」を解説します。
サイクロマティック複雑度(cyclomatic complexity)は、
ソフトウェアのコードやプログラムの複雑さを測定するためのメトリック(指標)の1つです。
プログラムのコード内の制御フローの複雑さを定量化し、理解するのに役立ちます。
この指標は、プログラム内の独立した経路(パス)の数をカウントします。
通常、ソフトウェアの制御フローは条件分岐、ループ、サブルーチン呼び出しなどによって形成されます。
サイクロマティック複雑度は、これらの要素を分析し、ソフトウェアのテストやメンテナンスのためのリスクやコストを評価するのに役立ちます。
一般的に、サイクロマティック複雑度が高いほど、プログラムの理解やテストが難しくなり、
バグの存在や修正がより確率的に起こります。そのため、開発者はサイクロマティック複雑度を低く保つことを目指して、
コードの設計やリファクタリングを行うことがあります。
<サイクロマティック複雑度の概要>
・プログラムの複雑さを測定するためのメトリック(指標)の1つ!
・サイクロマティック複雑度の「値」が重要!
高いほど、複雑…
逆に低いとカンタンなコードになる!
<サイクロマティック複雑度の公式>
公式:M = E – N + 2P
M=サイクロマティック複雑度(循環的複雑度)
E=グラフのエッジ数
辺(制御フロー内の直線的なパス)
N=ノード数(制御フロー内の条件分岐やループなどの基本ブロック)
P=連結成分の個数
コンポーネント(プログラムのエントリーポイント数)
<サイクロマティック複雑度が役立つ場面>
・コード品質の評価
プログラムのコードの複雑さを数値化するための指標です。
プログラムが複雑であるほど、理解やメンテナンスが難しくなります。
したがって、コード品質の観点から、サイクロマティック複雑度は非常に重要です。
コードの複雑さが高い場合は、リファクタリングや最適化を検討することができます
・テスト計画の策定
プログラムの制御フローの複雑さを示すため、テスト計画を策定する際に役立ちます。
サイクロマティック複雑度が高い部分は、エラーが発生する可能性が高いため、
これらの部分を重点的にテストすることができます。
・リファクタリングの指標
サイクロマティック複雑度が高い部分は、コードの品質を向上させるためのリファクタリングの候補として特定することができます。
複雑度が高いコードを単純化し、可読性を向上させることで、
将来的なメンテナンスの負担を軽減することができます。
・コードレビューの支援
コードレビューにおいて特に重要です。
コードレビューの際に、サイクロマティック複雑度が高い部分を特定し、
改善の提案を行うことができます。
【目次】
00:00 オープニング
00:51 サイクロマティック複雑度とは?
01:57 サイクロマティック複雑度の公式
03:16 実際に計算してみよう!
05:15 計算結果は値の意味は?
07:27 サイクロマティック複雑度って、何か役に立つの?
08:24 役に立ちそうな場面!
10:33 まとめ
12:28 エンディング
▼サイクロマティック複雑度のツール
lizard
https://github.com/terryyin/lizard
Understand
https://www.techmatrix.co.jp/product/understand/index.html
▼参考サイト
https://qiita.com/uhooi/items/c77a53a4c7ac232a1ba1
https://emb-sw-eng.com/cyclomatic_complexity/
https://qiita.com/Esperna/items/1eb7748033adc0badd95
https://ja.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E7%9A%84%E8%A4%87%E9%9B%91%E5%BA%A6
★公式ブログ
https://yukuri-it-channel.com/
★当チャンネルのSNSアカウント
不審なアカウントでなければ、基本的にフォローバック致します。
また、プロフィール設定が初期設定 or 鍵垢は、スパム被害防止のため、フォローバックは致しません。
X(Twitter)
https://twitter.com/yukuri_it
Instagram
https://www.instagram.com/yukuri_it_channel/
threads
http://threads.net/@yukuri_it_channel
★お問い合わせ
info@yukuri-it-channel.com
動画制作の背景
流石に3週連続、IPUSIRONさんのハッキングツール動画が続いたので、今回は別なテーマにしてみました。
同じテーマだと、チャンネルの視聴者も偏りそうですし、マンネリもしてるかな?と思ってます。
今回、こんなマニアックな動画ネタ、誰が興味あるんだ(笑)!と思って作りました。
知っている人いるかな…ってネタの「サイクロマティック複雑度」の解説です。
ここ最近、IPUSIRONさんネタが続いたので、今度は逆に知名度が低いだろうというマニアックなネタです(笑)
誰も関心がなく、絶対に伸びないだろうな!という自信のある動画です(笑)
情報処理技術者試験で出題された事がありますが、
ぶっちゃけ私の経験上、一度も使った事はありません(笑)
もし、業務で使った事がある方が居られましたら、コメント下さい(根拠が無いが、1人も居ない自信がある(笑))。