在关于返回变量的辩论中,团队中的某些成员更喜欢将结果直接返回给调用者的方法,而另一些成员则更喜欢声明一个返回变量,然后将其返回给调用者(请参见下面的代码示例)
后者的论点是,它允许正在调试代码的开发人员在方法返回给调用者之前找到方法的返回值,从而使代码更易于理解:对于以菊花链方式进行的方法调用,尤其如此。
是否有关于哪种方法最有效的准则和/或是否有其他原因导致我们应采用一种风格而不是另一种风格?
谢谢
private bool Is2(int a)
{
return a == 2;
}
private bool Is3(int a)
{
var result = a == 3;
return result;
}
另一个原因是因为您需要在计算结果和返回结果之间做其他事情。
—
tdammers 2012年
@ChrisF,其实他们不编译相同的IL对我来说(有额外的
—
svick 2012年
stloc.0
和ldloc.0
在第二版)。但是我认为只有在调试模式下才会发生这种情况。无论如何,这并不是很重要。
@svick-好的-我应该在“发布模式”中添加;)
—
ChrisF
由于您可以并且有时应该(为了简洁起见)编写类似于:
—
Job
a = b = c;
和的内容a == b == c
,因此,a = b == c
如果可以的话,我将避免编写类似于外观的内容。当我第一次看到这样的代码行时,我花了几秒钟来弄清楚发生了什么。该代码脱颖而出。我想在括号里a == 3
打上一点,但是StyleCop不喜欢它-使用第一个版本的充分理由。其他:这实际上是lambda,例如a => (a == 3)
。为什么要在已经肿的琐碎函数中添加一行代码?
result
在返回之前使用它。