クラスを変更する理由は複数存在してはならない
- クラスの役割が複数あればクラスを変更する理由も複数になる
- クラスが複数の役割を背負うと、ある役割が変更を受けるとそのクラスが担っている他の役割にも影響を受け、不具合が生じる可能性がある
- このようになってしまうと予想もしない形で壊れる脆い設計となる
役割とは?
- SRPでは「役割(責任)=変更理由」と定義している
永続性のあるシステムと単一責任の原則(SRP)
- 例えば頻繁に変化するビジネスルールとあまり変化しない永続性のあるシステムを混ぜてはいけない
- 頻繁に変化するものとあまり変化しないものを結合することは自らトラブルを生んでいるようなものである
- このような場合は役割を二つに分離する
まとめ
- 単一責任の原則(SRP)は最もシンプルな原則の一つであるが、正しく適用するのが最も難しい原則の一つでもある
- 結合している役割を見つけそれらを分離する作業はソフトウェア設計の本質である
考察
- 1つのクラスに複数の役割を持たせない
- 複数の役割が同時に変更されるようなケースでは分離する必要はない