なんだこれは

はてなダイアリーから移転しました。

恐怖の循環的複雑度

循環的複雑度(Cyclomatic complexity)というと、 McCabe さんが提唱したもので、プログラムの複雑度を測るもの。最低が1で複雑になると増えていく。当然だが、プログラムは単純な方がいい。

ちょっと前にひどいものをみた。

SourceMonitor*1で冗談ではかってみただけなんだよ。


どこでみたかはいわないが、ある関数の McCabe が 1439だ。
いや、書きまちがいでもなんでもない。14でも、143でもない。1439だ。

じゃあ、ちょっとあちこちをぐぐって一般の情報をさがしてみよう。

1-10 : シンプルで、リスクが小さい関数
11-20 : 中程度の複雑さとリスクの関数
21-50 : 複雑、リスクが高い関数
50以上 : マジでヤバイ関数

個人的には 20 以上だとちょっと嫌だな、という感じです。
まあ、普通に考えて書いていれば、基本的に 10 以内に収まると思います。
ちなみに、職場で見つけた一番ヤバかったのは 47 の関数でした
(そこは後でリファクタリングにより20まで落としましたが)。
stackoverflowだと、171 の関数を見たことがあるよ、という投稿があったりしたので、
それに比べると全然マシなのかな、という気もしてきます。

http://saturday-dory-fever.blogspot.jp/2012/04/cyclomatic-complexity.html

ふーん、やっぱりそんなものかー。171かー。すごいねー。

...

ふっざっけっんっなよっ! 1439のソース書いたやつ。
ちなみに私はそのコードに一切の関りをもっておりませんし、今後も持ちませんからねっ。

*1:ちなみに、V3.5.1.307 beta はUTF-8対応 http://www.campwoodsw.com/smbugs.html