-1

只是想知道调用方法的最佳实践是什么(在这种情况下,特别是在 java 中)

如果我有 6 个必须调用的函数,并且在逻辑上非常不同:

那么,说...

private void step1() { .. }
private void step2() { .. }
private void step3() { .. }
private void step4() { .. }

在我的主要方法中按顺序调用它们对我来说更好吗

step1();
step2();
step3();
step4();

或者如果在 step1 函数结束时我调用 step2 会更好吗?IE

private void step1() { 
    ..
    ..
    step2();
}
4

5 回答 5

8

不要想太多。

第一个选项更清晰、可读和不言自明。

step1();
step2();
step3();
step4();

或者

try{
    step1();
    step2();
    step3();
    step4();
} catch (StepException e) {
   // process failed
   ...
}
于 2012-10-05T13:57:15.477 回答
0

如果step1step2在逻辑上不同,这几乎意味着它们可以用于不同的输入。现在有一个经验法则,您可以使用它来减少步骤,并以更好的方式完成您的工作。

首先,您应该检查您的方法在执行不同操作的方式上是否不同,而不是针对完全相同的参数,并且您可能会发现自己或其他人使用它们进行编码,几乎stepN没有以前的方法或至少没有全部其中。如果是这样,那么将它们全部保持原样并按顺序调用它们就可以了。

如果不是,则重构您的代码,以便stepN1始终stepN2一个接一个地调用它,stepN并且您将获得一个逻辑上不同的自包含方法。如果您总是一遍又一遍地使用完全相同的参数调用方法,而不需要它们单独存在,那么将其设为一种方法,合并始终运行在一个片段中的代码。

如果你step2在代码中绑定,step1这意味着step1几乎只能在运行第二步的上下文中使用,这意味着它在某种意义上失去了其逻辑上不同的功能,这意味着你应该在这种情况下真正合并两者或使用第一种方式。因此,如果适用于您的情况,通常坚持第一种方式并以建议的方式改进您的编码!例外情况step1是仅在其中完整使用step2,但确实step2具有独特的功能,并且可以在您的程序中用于其他目的。然后你可以使用第二种方式。

请记住,它不仅是方式 1 或方式 2,您仍然可以混合它们以适应您的任务。我相信性能不是问题(如果我错了,有人愿意纠正我吗?)!

于 2012-10-05T14:06:30.320 回答
0

您的问题没有足够的上下文信息。

我一般要说的是:最好使用调用其部分的主要方法。因为它反映了一般流程的构建方式。

但也有例外。无论如何,这些异常可以通过其他方式构建(例如:step1 代码返回一个由主代码解析的代码,然后调用 step2)。这种方式堆栈不收取无用的中间调用。并且语义得到更好的保留。

于 2012-10-05T13:58:08.953 回答
0

这取决于他们是否相互依赖。如果 step2 依赖于 step1 那么你应该使用

private void step1() { 
   ..
   ..
   step2();
}

这消除了调用者必须对方法拥有的任何隐含知识(尤其是如果它们是公共的)

如果他们不相互依赖,那么您的第一个选择会更简单。

(我很想知道更多关于这种情况的信息,因为这对我来说有点臭)

于 2012-10-05T14:00:05.583 回答
0

如果它们在逻辑上不同,则 step1() 不应调用 step2()。

只需拨打4个电话。

于 2012-10-05T14:04:34.693 回答