今天我和某人吵架。
我正在解释使用富域模型相对于贫血域模型的好处。我用一个简单的类演示了我的观点:
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
}
}
当他为贫乏的模型方法辩护时,他的论据之一是:“我坚信SOLID。您在同一类中代表数据并执行逻辑时,您正在违反单一责任原则(SRP)。”
我发现这种说法确实令人惊讶,因为按照这种推理,任何具有一个属性和一种方法的类都违反了SRP,因此,OOP通常不是SOLID,而函数式编程是通向天堂的唯一途径。
我决定不回答他的许多论点,但我很好奇社区对此问题的看法。
如果我回答了,那么我将首先指出上述悖论,然后指出SRP高度依赖于您要考虑的粒度级别,并且如果将其考虑得足够远,则任何包含多个以上级别的类属性或一种方法违反了它。
你会说什么?
更新:该示例已由guntbert慷慨地进行了更新,以使该方法更加实际,并帮助我们专注于基础讨论。