同じようなコードの並びが、複数の場所で見られる。
メソッドが長くて理解しづらい。
インスタンス変数を持ちすぎている。コード量が多すぎる。
引数が多くて、それらの意味がわかりにくくなっている。
1つのクラスがさまざまな変更要求の影響を被る。
1つの変更がさまざまなクラスの変更を引き起こす。
他のクラスの属性やメソッドを使いすぎる。
(これは他のクラスに強く関連していることを意味します)
いつも一緒に使われるデータ群がある。
基本データ型ばかりを使っている。
switch文が多い。
(これは重複したコードの原因になります)
サブクラスを定義するたびに、他のクラスでもサブクラス化しなければならない。
すでに不要になったクラスが残っている。役に立たないクラスがある。
将来に備えるためだけの無意味なクラスがある。
一時的属性を使っている。
(これは変数の意味を不明にします)
メッセージが過剰に連鎖する。
メッセージを右から左に受け流すだけのオブジェクトがある。
クラス間の結合度が高く、privateがなくなる。
処理は同じなのにシグニチャ (メソッド名、引数の数、引数の型) が異なるメソッドがある。
クラスライブラリの修正が系統立って行われていない。
属性とgetおよびsetメソッド (プロパティ) 以外には、何も持たないクラスがある。
継承しても、スーパークラスの特性をあまり使っていない。
コメントは多いが、よい説明になっていない。