我刚读过SRP, as easy as 123…,所有这些都与我产生共鸣,除了一个段落,在一个名为“凝聚力”的部分中(我之前声称要“获得”Cohesion,但这个参数的谈话与实例字段让我暂停......):
上课。看看你的方法。 他们有参数还是他们 使用实例字段?如果它们是 使用参数,删除它们。使 他们的实例字段。你结束了吗? 使用只使用其中一个的方法 五个实例?最有可能的是 低凝聚力的警告 存在于该方法与您的方法之间 类。
这种参数的删除仅仅是一个临时练习,可以揭示接近静态能力(低内聚力)的方法,其理念是当你完成时你会返回参数的使用吗?
或者是参数字段优先于参数实际设计技术以保持高内聚力?
我是否以某种方式脱离了背景?
答案 0 :(得分:2)
CRUD是基于接口的编程的一种真正常见方法。采用两个实现CRUD接口的具体类:Employee和Building。
现在想象一下您的代码看起来如何基于参数:
Employee employeeObj = new Employee();
Building buildingObj = new Building();
string firstName = "Bob";
employeeObj.Create(firstName);
建筑怎么样?
BuildingTypes buildingType = BuildingTypes.One;
building.Create(buildingType);
Woops ...你应该如何用不同的参数实现CRUD接口?创建重载?更多接口?两个参数(名字姓氏)怎么样?
这会变得如此之快......因为只要你使用CRUD界面的参数就有多个理由要改变,这会降低设计的凝聚力。
让我们尝试使用基于对象/实例的参数...
Employee empObj = new Employee();
empObj.FirstName = "Bob";
empObj.Create();
Building buildingObj = new Building();
buildingObj.BuildingType = BuildingTypes.One;
buildingObj.Create();
使用简单的CRUD并且没有参数,甚至可以使用多态:
someObj.Create();
这也会导致胶囊化成分,去耦,SRP等......