「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>なんとか原則]] *目次 [#f4d2190d] #contents *概要 [#md342284] -オブジェクト指向プログラミングの分野において、 --ソフトウェア設計の5つの原則を記憶するための頭字語。 --Robert C. Martinにより提唱された原則の一部を集めたもの。 --以下の目的で考案された。 ソフトウェアを、 ---より理解し易くする。 ---より柔軟にする。 ---よりメンテナナンス性を高くする。 -ソフトウェア設計の原則であるGRASPとは無関係。 *詳細 [#xb8a9c76] **単一責任の原則(Single responsibility principle) [#r410d449] -1つのクラスは1つだけの責任を持たなければならない。 -すなわち、ソフトウェアの仕様の一部分を変更したときには、~ それにより影響を受ける仕様は、そのクラスの仕様でなければならない。 **開放閉鎖の原則(Open–closed principle [#pd932210] -「ソフトウェアのエンティティは~ 拡張に対して開かれていなければならないが、~ 変更に対しては閉じていなければならない。」 -変更に強く、拡張を容易にするために、できるだけ、~ >「[[部分型付け(Subtyping)>GRASP(General Responsibility Assignment Software Pattern)#f1299cd2]]で実装しろ。」 >みたいな話。 **リスコフの置換原則(Liskov substitution principle) [#y35d73b4] -「プログラムの中にある任意のオブジェクトは、~ プログラムの正しさを変化させることなく、~ そのサブクラスのオブジェクトと置換できなければならない。」 -[[部分型付け(Subtyping)>GRASP(General Responsibility Assignment Software Pattern)#f1299cd2]]を実装できるように、~ >「基本クラスのインターフェイスに対応する実装をしとけ。」 >みたいな話。 **インターフェイス分離の原則(Interface segregation principle) [#b51aa5f2] -「汎用的な目的のインターフェイスが1つだけあるよりも、~ 特定のクライアント向けのインターフェイスが多数あった方がよりよい。」 -オプショナルな機能を基本クラスのインターフェイスに実装るとアレ。~ 従って、 --インターフェースをグループ毎に分け --必要に応じてにインターフェース継承する。 **[[依存性逆転>#r6df87fb]]の原則(Dependency inversion principle) [#i87ee4ef] 「具体ではなく、抽象に依存しなければならない」 *参考 [#bfd24d35] -SOLID - Wikipedia~ https://ja.wikipedia.org/wiki/SOLID -開発者が知っておくべきSOLIDの原則 | POSTD~ https://postd.cc/solid-principles-every-developer-should-know/ **[[GRASP(General Responsibility Assignment Software Pattern)]] [#w6faa570] **よくわかるSOLID原則|erukiti|note [#m6c876b4] ***1: S(単一責任の原則) [#iab9fc9b] https://note.com/erukiti/n/n67b323d1f7c5 ***2: O(オープン・クローズドの原則) [#nb398b80] https://note.com/erukiti/n/n959277a74dd0 ***3: L(リスコフの置換原則) [#ube1530c] https://note.com/erukiti/n/n88b8ed99f1e1 ***4: I(インターフェース分離の原則) [#ua0d8da9] https://note.com/erukiti/n/n3daa55541bc8 ***5: D(依存性逆転の原則) [#v5411038] https://note.com/erukiti/n/n913e571e8207 **Qiita [#d53d688a] ***SOLID原則まとめ [#lccf08b9] https://qiita.com/kahirokunn/items/84b70631507928786bbb ***SOLID原則について簡単に書く [#yfc6192d] https://qiita.com/yui_mop/items/93fef037a787318e7067 **マイクロソフト系技術情報 Wiki [#fd38099b] ***[[デザイン・パターン>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%BB%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3]] [#g6ea561c] ***[[IoC>https://techinfoofmicrosofttech.osscons.jp/index.php?IoC]] [#t192e7b5] ***[[DI>https://techinfoofmicrosofttech.osscons.jp/index.php?DI]] [#cf63e2b6] ***[[IoC、AOP → DI → 依存性反転原則>https://techinfoofmicrosofttech.osscons.jp/index.php?IoC%E3%80%81AOP%20%E2%86%92%20DI%20%E2%86%92%20%E4%BE%9D%E5%AD%98%E6%80%A7%E5%8F%8D%E8%BB%A2%E5%8E%9F%E5%89%87]] [#r6df87fb]