我刚刚读过 SRP,很容易123…, ,所有这些都与我共鸣,除了一个段落,在名为“凝聚力”的部分中(我以前声称“获得”凝聚力,但是这种对参数与实例字段的讨论使我暂停...):):

上课。查看您的方法。它们有参数还是使用实例字段?如果他们使用参数,请删除它们。使它们成为实例字段。您是否最终使用仅使用五个实例之一的方法?这很可能是对该方法和您的班级之间存在的低凝聚力的警告。

删除参数只是临时练习,以揭示接近静态能力的方法(低凝聚力),并想到您完成后返回使用参数?

还是实例字段而不是参数的偏好是维持高内聚力的实际设计技术?

我是否以某种方式将报价从上下文中删除了?

有帮助吗?

解决方案

CRUD是基于接口的编程的真正常见方法。参加两个实现CRUD接口的具体课程:员工和建筑物。

现在想象一下您的代码将如何基于参数:

Employee employeeObj = new Employee();
Building buildingObj = new Building();

string firstName = "Bob";
employeeObj.Create(firstName);

那建筑呢?

BuildingTypes buildingType = BuildingTypes.One;
building.Create(buildingType);

Woops ...您应该如何用不同的参数实现CRUD接口?创建过载?更多接口?那两个参数(名称lastname)呢?

这将变得如此丑陋。...因为一旦您使用带有CRUD接口的参数,您就会有多个更改的理由,从而降低了设计的凝聚力。

让我们尝试使用基于对象/实例的参数...

Employee empObj = new Employee();
empObj.FirstName = "Bob";

empObj.Create();

Building buildingObj = new Building();
buildingObj.BuildingType = BuildingTypes.One;

buildingObj.Create();

用简单的碎屑和没有参数可以撒在多态性上:

someObj.Create();

这也导致封装的组成,脱钩,SRP等...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top