根据SOLID的冗余

时间:2013-12-09 15:28:11

标签: java oop solid-principles

根据SOLID,您是否应该按功能或类别消除冗余?

例如,如果我们有3个类,每个类都包含String filepath = "..."作为成员变量,那么最好创建一个新类,即Settings.java filepath作为成员变量或最好在它所属的每个类中保留filepath 3次,以便每个类对其自己的属性负全部责任吗?

3 个答案:

答案 0 :(得分:1)

我还认为你提供的信息太少,无法理解什么是最好的。

我不记得SOLID原则在谈论冗余本身,但有DRY原则。

我发现有关冗余的问题是,如果你在一个以上的地方做一件事,如果你需要改变一些事情,你必须记住更新所有正在完成的地方。如果你忘记了一个地方,你的系统就会出现不一致的地方,至少有两种方法可以做(概念上)相同的事情。

这通常会导致错误并不容易找到。

当然,这很容易解决,只是没有冗余;在做某事之前,看看你的系统中是否已有功能,如果没有找到相关的东西,请尝试对其进行概括。

答案 1 :(得分:1)

不要重复自己是单一责任原则的“另一面”。 SRP声明一个班级应该只有一个改变的理由。 DRY声明事实应该有一个单一的事实来源,所以如果你改变一个事实,那么依赖于这一事实的每一件事都会受到你的改变的影响。

在您的情况下,它取决于您的每个类使用filepath。如果文件必须具有公共路径以满足特定的业务需求,那么它们都应该引用单个定义,保留在包含该需求的某个位置。否则,他们应该有独立的声明,否则你会发现它们不会是非常可重用的。

答案 2 :(得分:0)

  

“创建一个新类,即Settings.java会更好吗?   filepath作为成员变量“

不,我认为那不会更好。没有更多细节,这很困难,但我可能会创建一个名为ISettings的接口,并使用DI将其注入必要的类中。

我认为这将更加符合SOLID。