【发布时间】:2018-03-19 23:06:11
【问题描述】:
我遇到了一些基于Coupling 的随机问题。
具有各种获取候选人信息的方法的候选类。其中一种方法是候选人获得的
getScore()分数。假设我们有另一个类 CompScience,它存储了有资格申请计算机科学流录取的候选人的详细信息。 CompScience 类有一个名为isEligibleToApply()的方法,如果候选人的分数超过 350,则返回 true。该方法的结构之一isEligibleToApply() 如下所示:
boolean isEligibleToApply(Candidate c) {
integer score = c.getScore();
Return true if Score is more than 350
}
在这种情况下,如果我们以某种方式更改 Candidate 类的 getScore() 方法(例如,通过重命名它),我们可能还必须更改 CompScience 类的 isEligibleToApply() 方法。
如果我更改方法 getScore() 的名称,那么它也应该在 isEligibleToApply() 方法中更改。这总是在我们更改名称时发生,维基百科建议这是内容耦合。
是否有任何方法可以使 isEligibleToApply() 方法中的任何更改都无法更改,并且代码是松散耦合的。我搜索了松耦合,得到了一些使用接口使代码松耦合的建议。
任何提示/建议?
【问题讨论】:
-
唯一的方法是只传入 int 分数作为参数;但是你遇到的问题是你可以传入 any int,而不仅仅是一个语义上是
Candidate的分数。这是一个真正的问题。重命名方法不是,因为有工具可以帮您完成。 -
实际上没有任何区别。使用接口并不意味着您以后不想更改名称并遇到同样的问题。关键是不要更改名称,但如果您确实接受了上述建议并使用了 IDE。
标签: java software-design loose-coupling