今日、誰かと議論がありました。
私は貧血領域モデルとは対照的に、豊富な領域モデルを持つことの利点を説明していました。そして、次のような単純なクラスでポイントをデモしました。
public class Employee
{
public Employee(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastname;
}
public string FirstName { get private set; }
public string LastName { get; private set;}
public int CountPaidDaysOffGranted { get; private set;}
public void AddPaidDaysOffGranted(int numberOfdays)
{
// Do stuff
}
}
彼は彼の貧血モデルアプローチを擁護したように、彼の引数の1だった:「私は信者だSOLIDあなたが違反している。単一責任の原則あなたは、両方のデータを表現し、同じクラスにロジックを実行しているとして(SRP)を。」
この主張に従えば、1つのプロパティと1つのメソッドを持つクラスはSRPに違反するため、この主張は本当に驚くべきものでした。したがって、一般にOOPはソリッドではなく、関数型プログラミングが天国への唯一の方法です。
私は彼の多くの議論に答えないことにしましたが、コミュニティがこの質問についてどう考えているのか興味があります。
私が答えていたら、上記のパラドックスを指摘することから始めて、SRPは検討したい粒度のレベルに大きく依存していること、そしてそれを十分に取って、複数のクラスを含むクラスプロパティまたは1つのメソッドが違反しています。
あなたは何を言ったでしょうか?
更新:この例はguntbertによってgeneしみなく更新され、メソッドがより現実的になり、基礎となる議論に集中できるようになりました。