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

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

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

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

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

一般的なコードの臭い

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

関連項目

  • アンチパターン
  • Don't repeat yourself

参考文献

外部リンク

  • CodeSmell at c2.com
  • Taxonomy of code smells

レコードのノイズ・雑音を除去する4つの方法 スズキサトシの音楽遊歩道

コード構成音の編集 KAWAI コンピュータミュージック

コードとは? code 音楽家への第一音

コード構成音 No.1】🎹鍵盤で半音ずつ上がる・下がるだけ、だれでも簡単に和音を構成する音が何か分かります。コード進行 コード奏法

コード構成音 No.4】🎹鍵盤で半音ずつ上がる・下がるだけのやり方(コード理論は使いません)だれでも簡単に和音の構成音が分かります。ピアノ