只是想知道调用方法的最佳实践(特别是在java中,在这种情况下)
如果我有6个必须被调用的函数,并且在逻辑上非常不同:
所以,说......
private void step1() { .. }
private void step2() { .. }
private void step3() { .. }
private void step4() { .. }
我在主方法中按顺序调用它们
是否更好?step1();
step2();
step3();
step4();
或者,如果在step1函数结束时调用step2,它会更好吗? 即。
private void step1() {
..
..
step2();
}
答案 0 :(得分:8)
不要过度思考。
第一种选择更清晰,可读和自我解释。
step1();
step2();
step3();
step4();
或
try{
step1();
step2();
step3();
step4();
} catch (StepException e) {
// process failed
...
}
答案 1 :(得分:0)
您的问题没有足够的背景信息。
我一般说的是:更好地使用调用其部件的主方法。因为它反映了一般过程的构建方式。
但也有例外。无论如何,这些异常可以通过其他方式构建(例如:step1代码返回由主代码解析然后调用step2的代码)。这种方式堆栈不收取有用的中间调用。并且语义更好。
答案 2 :(得分:0)
这取决于他们是否相互依赖。如果step2依赖于step1,那么你应该使用
private void step1() {
..
..
step2();
}
这将删除调用者必须对方法有的任何隐含知识(特别是如果它们是公共的)
如果他们不相互依赖,那么你的第一个选择就更简单了。
(我有兴趣了解这个场景的更多信息,因为这对我来说有点臭)
答案 3 :(得分:0)
如果它们在逻辑上不同,那么step1()不应该调用step2()。
只需拨打4个电话。
答案 4 :(得分:0)
如果step1
和step2
在逻辑上不同,则几乎意味着它们可用于不同的输入。现在有一个经验法则,您可以使用它来减少步骤,并以更好的方式完成您的工作。
首先,你应该检查你的方法是否与他们做不同的东西是截然不同的,而不是完全相同的论点,你可能会发现自己或其他编码的人自己调用stepN
而不是以前的或至少没有全部。如果是这样,那么将它们全部保持原样并按顺序调用它们就可以了。
如果没有,请重构您的代码,以便始终将stepN1
和stepN2
一个接一个地调用为stepN
,并获得一个自包含的逻辑上不同的方法。如果你一个接一个地使用完全相同的参数一遍又一遍地调用方法而不需要单独存在它们,那么将它作为一个方法,合并始终以一个整体运行的代码。
如果在step2
的代码中绑定step1
,这意味着step1
几乎只能在运行第二步的上下文中使用,这意味着它失去了逻辑上不同的功能从某种意义上说,这意味着你应该在这种情况下合并两者或使用第一种方式。因此,如果它适用于您的情况,通常坚持第一种方式并以建议的方式改进您的编码!例外情况step1
仅在其中使用step2
完成,但step2
trully具有自身的独特功能,可用于程序中的其他目的。然后你可以使用第二种方式。
请记住,它不仅仅是方式1或方式2,您仍然可以将它们混合以适应您的任务。而且我认为表现不是问题(如果我错了,任何人都会关心纠正我吗?)!