我有一个方法来检查某些事情,并根据这些检查返回一个布尔值.它涉及单个分支If部分按顺序检查约5个条件.如果这些条件中的任何一个返回true,则该方法将为return true;.如果没有条件返回true,那么方法将return false;.由于If部分之后的代码仅在没有条件为真的情况下才会运行,因此该代码在逻辑上与包含实际的Else语句相同.
那么在这种情况下实际写入Else声明是否更好?
编辑
事实证明,我需要有关哪些条件实际上为某些条件触发了"true"的信息,所以我更改了方法以返回int,-1表示"false"情况.逻辑仍然存在,如果没有条件成立,它将返回-1.所以,我不再有可缩减的选项return (cond1 || cond2 || cond3 || cond4 || cond5);,但我也感谢大家的建议,因为我确实没有想过它(主要是因为cond3是一个非常复杂的条件,涉及检查两对DateTime对象的中点的交集,所以它看起来很丑陋).虽然方法的性质已经改变,但这个问题的性质还没有,而且所有答案仍然基本适用......
代码是目前,用它来解释它并删除所有通过cond5定义cond1的无关代码......
if (cond1) { return 1; }
else if (cond2) { return 2; }
else if (cond3) { return 3; }
else if (cond4) { return 4; }
else if (cond5) { return 5; }
Run Code Online (Sandbox Code Playgroud)
LBu*_*kin 11
这真的是一种风格问题,你(和你合作的人)发现更清楚.一般来说,我个人觉得结构如下:
if( a )
someResult = doSomething();
else if( b )
someResult = doSomethingElse();
else
someResult = doSomethingAnyways();
return someResult;
Run Code Online (Sandbox Code Playgroud)
比:更清楚:
if( a )
return doSomething();
if( b )
return doSomethingElse();
return doSomethingAnyways();
Run Code Online (Sandbox Code Playgroud)
我倾向于喜欢这样的东西来回归硬性价值.
static bool SomeFunc(string arg)
{
bool result = false;
if (arg.Length < 10)
{
result = true;
}
else if (arg.StartsWith("foo"))
{
result = true;
}
if (!result && arg.EndsWith("foo"))
{
result = true;
}
return result;
}
Run Code Online (Sandbox Code Playgroud)