こんにちは、らべねこです。
私は今「アジャイルソフトウェア開発の奥義」を読んでいます。
その中のSOLID原則の部分がよく分からなかったので、私なりにまとめて理解したものをQiitaに投稿していきたいと思います。
間違い等ありましたらご気軽にコメントください。
SOLID原則とは
多くの設計で用いられている考え方を原則としてまとめたものです
以下の5つの原則があります
- S:SRP、単一責任の原則
- O:OCP、オープン・クローズドの原則
- L:LSP、リスコフの置換原則
- I:ISP、インタフェース分離の原則
- D:DIP、依存性逆転の原則
第1回は、単一責任の原則についてまとめました
S: 単一責任の原則(SRP: The Single Responsibility Principle)
守るべきルール
クラスを変更する理由は1つ以上存在してはならない
ルールを守らないとどのような問題が起きるか
- クラスが持つ役割が複数あると、そのうちの1つの変更でクラス全体に影響が出てしまいます
- クラスが本来持つべきではない不要な役割を持ってしまうこともあります
クラスが持つ役割は1つという原則ではない
- 複数の役割が必ず同時に変更されるようなケースでは分離する必要はないです
- 以下の理由があります
- 設計が不必要に複雑になってしまいます
- 「変更の理由が変更の理由たるのは、実際に変更の理由が生じた場合だけである」という法則があります。変更の兆候もないのに単一責任の原則を適用するのは懸命ではないです。
クラスによっては、複数の役割の分離が難しいものもある
- クラスによっては、全く関係のない役割のものを持たなければいけない制約があるものもあります
- 例) ハードウェアやOSがそのような役割の分離を許さない場合など
- この場合は、他の部分と依存関係がなく、他の部分に漏れ出さないようにすることが大切です
第2回では、オープン・クローズドの原則について説明します
(らべねこしか分からないSOLID原則になっていたらごめんなさい…)