当前位置: 首页 > 面试题库 >

return语句之前的局部变量,这有关系吗?

游高杰
2023-03-14
问题内容

抱歉,如果这是一个新手问题,但我找不到答案。这样做更好吗?

int result = number/number2;
return result;

要么:

return number/number2;

我知道整数会使用内存,所以我猜它会稍微降低性能吗?但另一方面,它使内容更清晰,尤其是当int / string是长计算时。


问题答案:

编辑: 如果像我一样,您使用的Kotlin比Java多,那么与IntelliJ在Kotlin中对此进行检查也有关系:

仅在以下返回中使用的变量,应内联

此检查报告仅在下一个 return 语句中使用的局部变量或其他变量的精确副本。在这两种情况下,最好都内联这样的变量。

实际上,有一个从PMD继承的SonarQube规则,称为“
不必要的本地
先行
返回”
,讨论了这一问题。它说:


避免不必要地创建局部变量。

此规则后来被
SSLR规则替换。
不应声明变量,然后应立即返回或抛出

变量
,它们保持相同的位置:

声明变量以立即返回或抛出该变量是一种 不好的做法
。一些开发人员认为,这种做法提高了代码的可读性,因为它使他们能够明确命名返回的内容。但是,此变量是内部实现细节,不会向方法的调用者公开。
方法名称应足以使调用者准确知道将返回什么

我完全同意。

IntelliJ(或至少是Android Studio)也针对这种情况发出警告:

变量仅在以下返回中使用,并且可以内联

此检查报告仅在下次返回中使用的局部变量或其他变量的精确副本。在这两种情况下,最好都内联这样的变量。

在这种情况下,我根本不担心性能。话虽如此,正如@Clashsoft在他的评论中提到的那样,JIT很可能会内联变量,并且无论哪种方式,您最终都会得到相同的结果。



 类似资料:
  • 和 C 语言一样,按照变量的作用域,我们可以把变量划分为局部变量和全局变量 Go 语言中局部变量的概念以及全局变量的概念和C语言一模一样 局部变量: 定义在函数内部的变量以及函数的形参称为局部变量 作用域:从定义哪一行开始直到与其所在的代码块结束 生命周期:从程序运行到定义哪一行开始分配存储空间到程序离开该变量所在的作用域 全局变量: 定义在函数外面的变量称为全局变量 作用域范围:从定义哪行开始直

  • 问题内容: 我在VBA中有以下代码: newvalue和tempvalue都是全局变量,并且已经被设置为值。语法上,这有意义吗?还是我缺少引号? 问题答案: 试试这个: 如果是 数字 : If是 字符串 (如果/不包含单引号): If是 字符串 (如果/包含单引号,如): 如果是 日期 : 感谢@HansUp在注释中指出, MID是函数的名称,因此在SQL语句中将该字段名称放在方括号或别名中会更安

  • 本文向大家介绍认识易语言句柄及局部变量,包括了认识易语言句柄及局部变量的使用技巧和注意事项,需要的朋友参考一下 局部变量  创建方法,选择“插入”  局部变量:就是只能在一个子程序里访问。程序集变量:就是能在一个程序集里访问,不过其他的程序集访问也可以(不过需要特殊访问)。全局变量:什么地方都能访问。

  • 本文向大家介绍局部变量和全局变量之间的差异,包括了局部变量和全局变量之间的差异的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将了解局部变量和全局变量之间的区别。 局部变量 通常在函数内部声明它。 如果未初始化,则将垃圾值存储在其中。 在函数开始执行时创建。 功能终止后,它将丢失。 由于可以通过单个功能访问局部变量/数据,因此无法进行数据共享。 需要将参数传递给局部变量,以便它们可以访问函

  • 我不断地得到缺少的return语句并且在解析时到达文件的结尾,然而我已经有了return语句并且我的代码正确地关闭了括号。请帮忙,谢谢

  • 问题内容: 作为Eclipse的长期用户,我正在与IntelliJ IDEA 10一起玩耍。我似乎找不到如何执行“向新局部变量分配语句”代码完成的工作。 功能说明: 我输入类似 然后按+ 并输入,Eclipse将行更改为: 同时,我可以立即键入“ bufferedOutputStream”以将其重命名(或从下拉菜单中选择“ bufferedOutputStream”,“ outputStream”