コードの臭い
表示
コードの臭い(こーどのにおい、英: Code smell)とは、コンピュータプログラミングにおいてプログラムのソースコードに深刻な問題が存在することを示す何らかの兆候のことを言う。
コードの臭いが示す深刻な問題は、小さく管理された手順でリファクタリングする短いフィードバックサイクルを廻し、それ以上のリファクタリングが必要なことを示すコードの臭いがないかどうか、設計を検査しなければならない。
リファクタリングを実施するプログラマの視点からは、コードの臭いはいつリファクタリングするか、どのリファクタリング手法を用いるか、発見するための方法である。すなわち、リファクタリングを後押しするものである。
「コードの臭い(code smell)」という呼び方は、ケント・ベックがWardsWikiで初めて用いたようである。マーチン・ファウラーの著書 Refactoring. Improving the Design of Existing Code で [1](邦訳[2]) 採り入れられたあと、様々なところで用いられるようになった。
何がコードの臭いで、何がそうでないかは主観的な判断であり、プログラミング言語、開発者や開発手法などによって異なる。 Java向けにはCheckstyle、PMD、FindBugsなどのツールがあり、ある種のコードの臭いを自動的にチェックすることができる。
一般的なコードの臭い
[編集]- 重複したコード
- 同一あるいは同様のコードが複数箇所に存在。
- 長すぎるメソッド
- メソッド、関数、手続きが長くなりすぎている。
- 巨大なクラス
- 大きくなりすぎたクラス。神オブジェクトを参照。
- 機能の横恋慕
- 他クラスのメソッドを過度に用いるクラス。
- 不適切な関係
- 他のクラスの実装の詳細に依存しているクラス。
- 相続拒否
- 基底クラスの規約が尊重されない形でのメソッドオーバーライド。リスコフの置換原則参照。
- 怠け者クラス
- 行うことが少なすぎるクラス。
- 重複メソッド
- 同一あるいは同様のメソッドが複数箇所に存在。
- 不自然な複雑さ
- 簡潔な設計で十分なところに、過剰に複雑なデザインパターンの使用を強制する。
関連項目
[編集]参考文献
[編集]- ^ Fowler, Martin (1999). Refactoring. Improving the Design of Existing Code. Addison-Wesley. ISBN 0-201-48567-2
- ^ ファウラー, マーチン (2001). リファクタリング―プログラムの体質改善テクニック. ピアソン・エデュケーション. ISBN 4894712288