SOLID
S: 単一責任の原則
O: オープン・クローズドの原則
L: リスコフの置換原則
I: インタフェース分離の原則
D: 依存性逆転の原則
完全なプログラミングと通じるところがある
無駄がなく変更に強い(無駄がないから変更に強い)