gpt4 book ai didi

java - 'facade method'(调用自己类的公共(public)方法)是否被认为是糟糕的设计?

转载 作者:行者123 更新时间:2023-11-29 03:08:25 25 4
gpt4 key购买 nike

“外观方法”是否被认为是糟糕的设计(我想不出更好的术语)。示例:

public class MyService() {
public void doThis() {
// do something
}

public int doThat() {
// do something
}

public boolean isThisTrue(String str) {
// do something
}

// determine something by calling methods within the same class
public boolean shouldSomethingBeDone() {
int result = 0;

if (isThisTrue("foobar")) {
doThis();
result = doThat();
}

return result > 0;
}
}

我试图避免在调用服务的 Controller 类之一中包含太多逻辑。我能看到解决这个问题的唯一方法是创建一个方法,例如上面的方法。

当我尝试创建一个单元测试并模拟 shouldSomethingBeDone() 方法中的调用时,问题出现了。由于所有调用都是针对同一类中的方法,因此很难对此进行模拟。

谢谢。

最佳答案

你见过Tell Don't Ask吗?原则?

isThisTrue 之类的方法提出问题并将回答问题的逻辑推到各处。相反,更喜欢只告诉对象该做什么,然后让它去操心。

这表明您应该重命名该方法,而不是 shouldSomethingBeDone 来告诉对象该做什么(没有真名很难,但可以说 doSomething 是一个更好的名字).

关于java - 'facade method'(调用自己类的公共(public)方法)是否被认为是糟糕的设计?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30803422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com