在if-else中调用方法或在if-else中调用方法

时间:2018-08-14 09:24:28

标签: java if-statement

我对在if-else或if-else语句之外调用方法有疑问。

调用方法 if-else

int a = 1;

if (SOME_CONDITION) {
    /* Never chagned variable a */
    foo(a);
} else {
    /* Never chagned variable a */
    foo(a);
}

if-else中的 out 呼叫方法:

int a = 1;

if (SOME_CONDITION) {
    /* Never chagned variable a */
} else {
    /* Never chagned variable a */
}

foo(a);

哪个表现更好?

6 个答案:

答案 0 :(得分:4)

在性能上没有区别,但在代码重复方面没有区别。因此第二种方法更好。

但是,让我为您介绍另一种方式:

if (SOME_CONDITION) {
   /* Never chagned variable a */
 } else {
    /* Never chagned variable a */
}

int a = 1;
foo(a);

甚至更好:

foo(1);

如果变量之间没有步长,则保留使用调用该变量的方法。另外,请勿定义新变量,因为该值可能会立即传递。

答案 1 :(得分:1)

  

哪个表现更好?

无论哪种方式,该方法仅被调用一次,因此不会有任何区别。

但是,通常来说,重点是编写清晰,可理解,可维护的代码,并在遇到特定性能问题时担心性能问题。

在这种情况下,您的第二个选项更清晰,更易于维护(将呼叫放在两个位置打开了更改其中一个而忘记更改另一个的可能性)。

答案 2 :(得分:1)

在性能方面,两者相同。

谈论内存,第二种方法更好。此方法称为代码移动,是一种代码优化技术。这是因为如果函数是由编译器内联的,则整个函数体将被粘贴两次,这将导致更多的代码空间。 希望能有所帮助:)

答案 3 :(得分:1)

它们的性能相同。

答案 4 :(得分:0)

没有可确定的差异,但是选项2是更好的代码,因为foo()不取决于条件

答案 5 :(得分:-1)

编程本身表明,一行比两行更好。但在这种情况下

if (SOME_CONDITION) {
/* Never chagned variable a */
foo(a);}

如果条件仅执行一次,它将不会对您的性能产​​生重大影响