0

考虑以下两种方法:

public int add(int i, int j) {

    return i + j;
}

public int add(int i, int j) {
    int k = i + j;
    return k;
}

在这种情况下,对于两个给定的整数值作为输入,它们返回相同的值,但两者有什么区别吗?我不确定,但我认为使用第一个可能会有轻微的性能优势,而有些人可能会争辩说第二个更具可读性。

就我个人而言,我总是像第一种方法一样返回表达式,但是通过 netbeans 网站上的教程,他们使用后者:

在此处输入图像描述

如果只是像上面这样的一次计算,是否存在两者中的一个比另一个具有显着优势的情况?

4

5 回答 5

3

这真的没关系 - 编译器在优化期间无论如何都会删除那个额外的变量。几乎总是与这类问题一样,唯一重要的是代码的可读性和可维护性,所以在这种情况下真的取决于你(但我更喜欢返回表达式,没有理由额外变量)。

于 2013-10-21T10:33:38.697 回答
2

第二种方法使调试更容易(“return k”行是断点的完美候选者)。

于 2013-10-21T10:40:12.183 回答
0

两种方式都很好。但事情是基于上下文的。

考虑以下示例。

这绝对干净且更具可读性。

public int add(int i, int j) {

    return i + j;
}

现在看看在某些情况下会发生什么

 public int calculate(int i, int j) {
        int k= doAnotherCal(i,j);
        int result= getThisDone(x);
        return result;
    } 

所以这只是上下文和可读性的问题。如果您担心内存/性能,现代 JVM 足以解决大多数与内存相关的问题。

瞄准可读的代码,这样地球上的每个人最后都会快乐:)

于 2013-10-21T10:42:47.177 回答
0

不会有任何性能差异,但是第二个优势不大,如果表达式很大,那么第一个看起来有点令人毛骨悚然和混乱。

于 2013-10-21T10:34:34.333 回答
0

如果出于任何原因需要使用调试器运行代码,则使用第二个有一个巨大的优势。您可以使用调试器停止return k;并查看即将返回的实际值。你不能用第一种形式做到这一点。

由于这个原因,许多有经验的程序员养成了总是使用变量作为返回值的习惯。他们永远不知道以后是否有人需要在代码上使用调试器。

于 2013-10-21T10:37:04.960 回答