開発
「良いコード」の測り方
Yuki Ito
良いコードを書いていますか? 「良いコードとは何か」というのは以外にも難しく、なかなか答えが出ない問の一つだと思います。
しかし、ある程度ですが、「どのくらい『良い』のか」を簡単かつ科学的に類推することのできる指標はいくつか存在します。今日はこれを紹介します。
1. 関数/ファイルあたりの行数(LOC)
関数やファイルあたりの行数はある程度それらの複雑性を示す指標になりえます。例えば、弊社で使用しているCommunity Ruby Style Guideには、「ひとつのメソッドは5行以内が望ましく、少なくとも10行以内にするべき」という記述があります。
2. Cyclomatic complexity(循環的複雑度)
Cyclomatic complexityとは、その関数内でありうる経路の総数から求まるものです。10以下が望ましいとされ、30以上になると構造的なリスクが高いと言われます。
3. コミットのまとまり
「プログラマが知るべき97のこと」の育ちのよいコードにおいて、おもしろいソースコードの見方が提案されています。
詳しくは原文をぜひご覧になってほしいのですが、簡単に言えばコミットログを見て、ひとつのコミットが複数のファイルにまたがっていたら、それは良くないコードである可能性が高い、というものです。
いかがでしたでしょうか。
もちろん、ソースコードを設計するときは結合度と凝集度を意識しながら、それを下げるための様々な手法を吟味すべきです。しかし、上に挙げたうち1と2については、Lintツール等を使用することで手軽なソースコードの複雑性の指標となります。
例えば、弊社のあるプロジェクトでは、bitbucketのリポジトリにpushすると以下のような感じで警告が出る場合があります。
上記の指標を手がかりとして、良いコードを目指していきましょう。