SOLID原則
単一責任の原則(Single responsibility principle)
1つのクラスは1つだけの責任を持たなければならない。すなわち、ソフトウェアの仕様の一部分を変更したときには、それにより影響を受ける仕様は、そのクラスの仕様でなければならない。
開放閉鎖の原則(Open–closed principle)
「ソフトウェアのエンティティは(中略)拡張に対して開かれていなければならないが、変更に対しては閉じていなければならない。」
リスコフの置換原則(Liskov substitution principle)
「プログラムの中にある任意のオブジェクトは、プログラムの正しさを変化させることなく、そのサブクラスのオブジェクトと置換できなければならない。」詳しくは契約プログラミングも参照。
インターフェイス分離の原則(Interface segregation principle)
「汎用的な目的のインターフェイスが1つだけあるよりも、特定のクライアント向けのインターフェイスが多数あった方がよりよい。」
依存性逆転の原則(Dependency inversion principle)
「具体ではなく、抽象に依存しなければならない」