- 重複したコード
- コードがあちこちでダブっている
- 長すぎるメソッド
- メソッドが長すぎる
- 巨大なクラス
- クラスが持っているフィールドやメソッドが多すぎる
- 多すぎる引数
- メソッドへ渡す引数が多すぎる
- 変更の発散
- 仕様変更が起きた時の修正箇所があちこちに散らばっている
- 変更の分散
- あるクラスを修正すると、他のクラスもあわせて修正しなければならない
- 属性、操作の横恋慕
- いつも他のクラスの中身をいじってるクラスがある
- データの群れ
- まとめて扱うべき複数のデータが、1つのクラスにまとまっていない
- 基本データ型への執着
- クラスを作らず、intのような基本データ型ばかり使っている
- スイッチ文
- switch文やif文を使って振る舞いを分けている
- パラレル継承
- サブクラスを作るとクラス階層の別のところにもサブクラスを作らなければならない
- 怠け者クラス
- クラスが大した仕事をしていない
- 疑わしき一般化
- いつかこういう拡張もするだろうと期待して、一般化しすぎる
- 一時的属性
- 一時的にしか使わないフィールドがある
- メッセージの連鎖
- メソッドの呼び出しの連鎖がある
- 仲介人
- 移譲ばかりしていて、自分では仕事をしていないクラスがある
- 不適切な関係
- その必要がないのに双方向リンクを張っていたり、IS-A関係がないのに継承を使っていたりする
- クラスのインタフェース不一致
- クラスのインタフェース(API)が不適切である
- 未熟なクラスライブラリ
- 既存のクラスライブラリが使いにくい
- データクラス
- フィールドとgetterメソッドとsetterメソッドしか持っていないクラスがある
- 相続拒否
- 継承しているメソッドなのに、それを呼ぶと問題が起きる
- コメント
- コードの不備を補なうために、詳しいコメントがある
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme