コードの臭い

出典: フリー百科事典『ウィキペディア(Wikipedia)』

コードの臭い(こーどのにおい、: Code smell)とは、コンピュータプログラミングにおいてプログラムソースコードに深刻な問題が存在することを示す何らかの兆候のことを言う。

コードの臭いが示す深刻な問題は、小さく管理された手順でリファクタリングする短いフィードバックサイクルを廻し、それ以上のリファクタリングが必要なことを示すコードの臭いがないかどうか、設計を検査しなければならない。

リファクタリングを実施するプログラマの視点からは、コードの臭いはいつリファクタリングするか、どのリファクタリング手法を用いるか、発見するための方法である。すなわち、リファクタリングを後押しするものである。

「コードの臭い(code smell)」という呼び方は、ケント・ベックWardsWikiで初めて用いたようである。マーチン・ファウラーの著書 Refactoring. Improving the Design of Existing Code[1](邦訳[2]) 採り入れられたあと、様々なところで用いられるようになった。

何がコードの臭いで、何がそうでないかは主観的な判断であり、プログラミング言語、開発者や開発手法などによって異なる。 Java向けにはCheckstylePMDFindBugsなどのツールがあり、ある種のコードの臭いを自動的にチェックすることができる。

一般的なコードの臭い[編集]

重複したコード
同一あるいは同様のコードが複数箇所に存在。
長すぎるメソッド
メソッド、関数、手続きが長くなりすぎている。
巨大なクラス
大きくなりすぎたクラス神オブジェクト英語版を参照。
機能の横恋慕
他クラスのメソッドを過度に用いるクラス。
不適切な関係
他のクラスの実装の詳細に依存しているクラス。
相続拒否
基底クラスの規約が尊重されない形でのメソッドオーバーライドリスコフの置換原則参照。
怠け者クラス
行うことが少なすぎるクラス。
重複メソッド
同一あるいは同様のメソッドが複数箇所に存在。
不自然な複雑さ
簡潔な設計で十分なところに、過剰に複雑なデザインパターンの使用を強制する。

関連項目[編集]

参考文献[編集]

  1. ^ Fowler, Martin (1999). Refactoring. Improving the Design of Existing Code. Addison-Wesley. ISBN 0-201-48567-2 
  2. ^ ファウラー, マーチン (2001). リファクタリング―プログラムの体質改善テクニック. ピアソン・エデュケーション. ISBN 4894712288 

外部リンク[編集]