不吉な匂い
マーチン ファウラー(著)リファクタリングでは、リファクタリングが必要な個所を「不吉な匂い」と表現しています。
これは感覚的でよい表現だと思います。たとえばソースを解析していて「よくわからない」、「直しづらい」と感じる個所は「不吉な匂い」の可能性が高く、リファクタリングの候補と言えるでしょう。
以下に書籍「リファクタリング」に記載されている22個の「不吉な匂い」を紹介します。
●
重複したコード
コードがあちこちでダブっている。
●
長すぎるメソッド
メソッドが長すぎる。
●
巨大なクラス
クラスが持っているフィールドやメソッドが多すぎる。
●
多すぎる引数
メソッドへ渡す引数が多すぎる。
●
変更の発散
仕様変更がおきたときの修正箇所があちこちにちらばっている。
●
変更の分散
あるクラスを修正すると、他のクラスもあわせて修正しなければならない。
●
属性、操作の横恋慕
いつも他のクラスの中身をいじっているクラスがある。
●
データの群れ
まとめて扱うべき複数のデータが、1つのクラスにまとまっていない。
●
基本データ型への執着
クラスを作らず、intのような基本データ型ばかり使っている。
●
スイッチ文
switch文やif文を使って振る舞いを分けている。
●
パラレル継承
サブクラスを作ると、クラス階層の別のところにもサブクラスを作らなければならない。
●
怠け者クラス
クラスが大した仕事をしていない。
●
疑わしき一般化
いつかこういう拡張もするだろうと期待して、一般化しすぎる。
●
一時的属性
一時的にしか使わないフィールドがある。
●
メッセージの連鎖
メソッド呼び出しの連鎖が多すぎる。
●
仲介人
委譲ばかりしていて、自分では仕事をしていないクラスがある。
●
不適切な関係
その必要がないのに双方向リンクを張っていたり、IS-A関係がないのに継承を使っていたりする。
●
クラスのインタフェース不一致
クラスのインターフェース(API)が不適切である。
●
未熟なクラスライブラリ
既存のクラスライブラリが使いにくい。
●
データクラス
フィールドとプロパティ(getterメソッドとsetterメソッド)しか持っていないクラスがある。
●
相続拒否
継承しているメソッドなのに、それを呼ぶと問題がおきる。
●
コメント
コードの不備を補うために、詳しいコメントがある。
コメントはまだありません。