はじめに
SOLIDの逆をChatGPTに考えてもらった
SOLID
https://ja.wikipedia.org/wiki/SOLID
単一責任の原則 (Single Responsibility Principle) の逆
あるクラスやモジュールが複数の責任を持ち、複数の異なる目的や機能を担当するような設計になっている場合、単一責任の原則に反しています。
オープン/クローズドの原則 (Open/Closed Principle) の逆
システムの変更や拡張に対して閉じておらず、変更が必要な場合に既存のコードを変更する必要がある設計になっている場合、オープン/クローズドの原則に反しています。
リスコフの置換原則 (Liskov Substitution Principle) の逆
サブクラスが親クラスの代わりに正しく動作しない、あるいはサブクラスで追加された振る舞いが親クラスの予想外の動作を引き起こす場合、リスコフの置換原則に反しています。
インターフェース分離の原則 (Interface Segregation Principle) の逆
インターフェースが大きくて太い、あるいはクライアントが不必要なメソッドやプロパティに依存している場合、インターフェース分離の原則に反しています。
依存性逆転の原則 (Dependency Inversion Principle) の逆
高レベルのモジュールが低レベルのモジュールに直接依存し、具象クラスに依存している場合、依存性逆転の原則に反しています。
感想
まとめると、機能と責任があらゆるところに散らばっていて、拡張や変更や分離が難しく、コードからは予想外のふるまいをして、無駄が多くて中止するべき箇所が不明で、些細な変更でも影響範囲が不明なためすべてを再ビルドと再テストを行う必要がある。
頭の中がごちゃごちゃするね。くそコードとはこういうことさ。
筆者はリスコフの置換原則の逆はあんまり実感わかない。そもそもサブクラスをあまり使わない方針にしているから。