SOLID 原則の妥当性

SOLID の原則は、2000 年にロバート マーティン (ボブおじさんとしても知られている) の記事「デザインの原則とデザイン パターン」で紹介されました。 





それから二十年が経ちました。問題が発生します - これらの原則はまだ関連していますか? 





これは、2020 年 10 月に公開されたボブおじさん記事の翻訳であり、現代の開発における SOLID 原則の関連性について説明しています。       





私は最近、次の考慮事項を含む電子メールを受け取りました。





何年にもわたって、SOLID の原則に関する知識は採用の基準となっています。候補者はこれらの原則に自信を持つことが期待されていました。しかし、その後、ほとんどコードを書かなくなったマネージャーの 1 人が、これが妥当かどうか疑問に思いました。彼は、大部分の場合、大きなモノリス用のコードを作成しなくなったため、開放/閉鎖原則の重要性が低下したと主張しました。また、コンパクトなマイクロサービスへの変更は安全で簡単です。





リスコフの置換原則は、20 年前ほど継承に注意を払っていないため、長い間時代遅れでした。Dan Northの SOLID に関する立場- 「シンプルなコードを書く」を考慮する必要があると思います





その返事として、私は以下の手紙を書きました。





SOLID の原則は、20 年前 (およびそれ以前) と同じように、今日でも有効です。それは、チューリングが電子コンピューターのコードの最初の行を書いた 1945 年以来、ソフトウェアがあまり変わっていないという事実の結果です。ソフトウェアは、依然として演算子if



、ループ、while



および代入演算 (シーケンス、選択、反復)です。    





それぞれの新しい世代は、自分たちの世界が前の世代の世界とは大きく異なると考えるのが好きです。すべての新しい世代はこれについて間違っています。彼らは、次の世代が来るとすぐに、物事がどれだけ変わったかを彼らに伝えるために、そのことに気付くのです。<笑い>





それでは、順番に原則を見ていきましょう。 





SRP - Single Responsibility Principle .





, . , . 





, . - . SQL- . , , , . , , , .  





. , , . 





, ( , , ). SRP - “ ”. . SRP - .  





OSP - Open-Closed Principle -





, . 





, - , . , , , . , , ? if



, , ?





... ? - , ? !





.





(. , , )





. ó - . , , . - “ ”. . , . .





LSP - Liskov Substitution Principle





, , . 





( ) , . . . , . , , . , if/switch



.





- . .





, . - , .





ISP - Interface Segregation Principle





, .  





- . , , . , - A B , , B A.





, Java, C#, C++, GO, Swift .. , - Maven Leiningen . 





.





(. “ , ” “ !!”)





, , .





(. “ - !”)





, , (SRP). .





DIP - Dependency Inversion Principle





. .





, . - . , , . , , , SQL-, . . , , , , , .





いずれの場合も、デンのスライドは「シンプルなコードを書く」というフレーズで終わります。これは良いアドバイスです。しかし、長い年月が私たちに何かを教えてくれるとしたら、それは、シンプルさには原則に導かれた規律が必要だということです。シンプルさを定義するのはこれらの原則です。プログラマーが単純なコードを書くように駆り立てるのはこの規律です。





混乱を引き起こす最善の方法は、全員に「シンプルに」と伝え、それ以上の指示は与えないことです。 








All Articles