避免使用大型单片方法被认为是一种很好的做法。我个人喜欢识别所有服务于独特,明确目的的代码片段,并将它们重构为方法。这样,代码更像是一本书。
这种方法的一个明显问题是,我的班级最终会在预定范围之外提供大量方法,我觉得这是非常不受欢迎的。
有一些方法可以在Java中创建嵌套函数,但由于该语言不直接支持该功能,因此生成的代码通常难以理解 - 至少对我而言。
也可以使用嵌套类。我不喜欢这个解决方案的是它有点笨拙 - 是吗? - 当“组合在一起”中的一些涉及的方法被覆盖的方法时。
相当模糊的问题,但无论如何我想知道人们如何去做这件事。
编辑:我的意思的例子:
public class ClassWithTwoMainMethods {
private int var1;
private int var2;
public void doSomething(int a) {
if (conditionToCheck(a)) {
doSomethingSpecific();
}
}
private void doSomethingSpecific() {
...
}
private boolean conditionToCheck(int a) {
...
}
public void doSomethingElse(int a, int b) {
doSomethingElseHelper1(a+b);
doSomethingElseHelper2();
doSomethingElseHelper3();
}
private void doSomethingElseHelper1(int arg) {
...
}
private void doSomethingElseHelper2() {
...
}
private void doSomethingElseHelper3() {
...
}
}
乍一看,上面的班级有一个“主”方法,其中两个“助手”不应该在其他任何地方使用,而另一个“主要”方法有三个助手,这一点并不明显。
答案 0 :(得分:1)
我为此使用“工人对象”。工作对象仅存在于方法内部,有助于实现目标。一个典型的例子是String
,除了这个工人非常有用,方法经常会返回它。
所以我要做的是将工作对象中的方法分组,在公共API方法中创建它(即应该在公共API中使用和记录某些东西)并让它做到这一点:
public void doSomethingElse(int a, int b) {
new Worker( a, b ).run();
}
这种方法有一些好处: