私は最近、それらがSRPを明らかに壊す可能性があることを説明する記事を読みました。セッターとゲッターで単一のクラスを長い間書いていたので、今は完全に混乱しています。
また、これを見つけましたが、 SRPとは関係ありません
一見すると、getter と setter の両方が、現在のクラスにのみ「属する」ロジックを持っているため、 Single Responsibility Principleを破ることはありません。彼らは、単一の目的を「果たす」クラスメンバーにアクセス/書き込みできます。罰金。
しかし、待ってください。最初に基本的な用語を定義しましょう。
データ アクセス = セッターとゲッターの両方
データ処理= データ処理、操作CRUD
、検証など
もしそうなら、1 つのクラス内に 2 つの異なる責任があり、SRPを破ることになります。
ここで、SRP を壊さないようにするために、データ アクセスとデータ操作を異なるクラスで定義するとします。
class DA { // <- Data Access
public string getName() {
return this.name;
}
public string setName(name) {
this.name = name;
}
}
class DataHandler {
public DataHandler(da) { // <- Inject an instance of DA
this.da = da;
}
public bool validate() {
// validation stuff
}
}
上記の SRP に違反していないため、問題ないようです。しかし、ここでは DA クラスにセッターとゲッターが 1 つしかありません。
今質問:
1) SRP を壊さないように、setter と getter が 1 つしかない場合でも、常に別の DA クラスを作成する必要がありますか?
2) セッターとゲッターは本当にSRPを壊しますか? また、クラス内で決して使用すべきではありませんか?
3) もしそうなら、依存性注入は常に答えです!?