抱歉,如果这是一个新手问题,但我找不到答案。这样做更好吗?
int result = number/number2; return result;
要么:
return number/number2;
我知道整数会使用内存,所以我猜它会稍微降低性能吗?但另一方面,它使内容更清晰,尤其是当int / string是长计算时。
编辑: 如果像我一样,您使用的Kotlin比Java多,那么与IntelliJ在Kotlin中对此进行检查也有关系:
仅在以下返回中使用的变量,应内联 此检查报告仅在下一个 return 语句中使用的局部变量或其他变量的精确副本。在这两种情况下,最好都内联这样的变量。
仅在以下返回中使用的变量,应内联
此检查报告仅在下一个 return 语句中使用的局部变量或其他变量的精确副本。在这两种情况下,最好都内联这样的变量。
实际上,有一个从PMD继承的SonarQube规则,称为“ 不必要的本地 先行 返回” ,讨论了这一问题。它说:
避免不必要地创建局部变量。
此规则后来被 SSLR规则替换。 不应声明变量,然后应立即返回或抛出 该 变量 ,它们保持相同的位置:
仅声明变量以立即返回或抛出该变量是一种 不好的做法 。一些开发人员认为,这种做法提高了代码的可读性,因为它使他们能够明确命名返回的内容。但是,此变量是内部实现细节,不会向方法的调用者公开。 方法名称应足以使调用者准确知道将返回什么 。
我完全同意。
IntelliJ(或至少是Android Studio)也针对这种情况发出警告:
变量仅在以下返回中使用,并且可以内联 此检查报告仅在下次返回中使用的局部变量或其他变量的精确副本。在这两种情况下,最好都内联这样的变量。
变量仅在以下返回中使用,并且可以内联
此检查报告仅在下次返回中使用的局部变量或其他变量的精确副本。在这两种情况下,最好都内联这样的变量。
在这种情况下,我根本不担心性能。话虽如此,正如@Clashsoft在他的评论中提到的那样,JIT很可能会内联变量,并且无论哪种方式,您最终都会得到相同的结果。