如果我有类似循环或一组 if/else 语句的东西,并且我想从嵌套中返回一个值(见下文),那么最好的方法是将值分配给字段或属性并返回那?
见下文:
bool b;
public bool ifelse(int i)
{
if(i == 5)
{
b = true;
}
else
{
b = false;
}
return b;
}
如果我有类似循环或一组 if/else 语句的东西,并且我想从嵌套中返回一个值(见下文),那么最好的方法是将值分配给字段或属性并返回那?
见下文:
bool b;
public bool ifelse(int i)
{
if(i == 5)
{
b = true;
}
else
{
b = false;
}
return b;
}
关于什么
return i == 5;
对此有多种看法。我认为大多数人(包括我)倾向于在您得到答案并且没有更多工作要做后立即返回。有些人会争辩说,你应该只在方法的最后一个语句处返回。但是,在某些情况下,它实际上会使事情变得更加复杂。
按照我的建议,你的例子会更短更简单:
public bool ifelse(int i)
{
if(i == 5)
{
return true
}
return false
}
如果 b 仅用于计算您的方法的返回值,那么您应该将其设为局部变量(在方法中定义)。
public bool ifelse(int i)
{
bool b;
/*
Some code to calculate b
*/
return b;
}
正如其他人所建议的那样,如果您的方法很简单,我将完全避免使用临时变量并在知道结果后立即返回。一般规则是使用使代码最容易阅读的任何方法。
我想说的是,您是否应该通常只在两个地方从方法返回 - 靠近开始(如在守卫条件下)和接近结束;如果该方法有任何长度,您应该使用您提到的临时变量,否则阅读代码的人可能难以理解它。
是的,这是很好的风格。
另一种选择(这会很糟糕)是这样做:
public bool ifelse(int i)
{
if(i == 5)
{
return true;
}
else
{
return false;
}
}
多个返回点被认为是不好的风格的原因是,特别是对于较大的方法,很难跟踪方法内的程序流,因为它可能在任何时候退出。这可能是调试的噩梦。但是,如果您有一个要分配的返回变量,您可以观察该变量并确切知道它何时返回(从一个地方)。
情况并非总是如此,因为编程中的每一个风格点都有好的一面,也有不好的一面。