是否有充分的理由说明为什么在函数中只有一个return语句是更好的做法?
或者,一旦逻辑正确就可以从函数返回,这意味着函数中可能有很多返回语句?
我个人是三元运算符的拥护者:()?:; 我确实意识到它有它的位置,但我遇到了许多完全反对使用它的程序员,而且有些人经常使用它.
你有什么感受?你看到了什么有趣的代码?
这个方法:
boolean containsSmiley(String s) {
if (s == null) {
return false;
}
else {
return s.contains(":)");
}
}
Run Code Online (Sandbox Code Playgroud)
可以等同地写成:
boolean containsSmiley(String s) {
if (s == null) {
return false;
}
return s.contains(":)");
}
Run Code Online (Sandbox Code Playgroud)
根据我的经验,第二种形式更常见,特别是在更复杂的方法中(可能有几个这样的退出点),"throw"和"return"也是如此.然而,第一种形式可以说使代码的条件结构更加明确.有什么理由比较喜欢一个吗?
(相关:一个函数应该只有一个return语句吗?)
可能重复:
在不需要的情况下,是否应该保留或删除?
什么时候
a = 0
Run Code Online (Sandbox Code Playgroud)
这个:
var foo = function() {
if (a != 0) return true
return false
}
Run Code Online (Sandbox Code Playgroud)
或这个:
var bar = function() {
if (a != 0) return true
else return false
}
Run Code Online (Sandbox Code Playgroud) 1)我知道if…else if语句是如何工作的,但在下一个例子中,就结果值而言,两种方法都是相同的.那么我使用的两种方法中的哪一种或者我应该总是选择一种在语义上最接近代码尝试的方法(这里我猜这两种方法在语义上是完全不同的)?那么你会使用哪种方法?为什么?
protected string GetNumberDescription(int value)
{
if (value >= veryBigNumber)
return veryBigNumberDescription;
else if (value >= bigNumber)
return bigNumberDescription;
else if (value >= smallNumber)
return smallNumberDescription;
else
return "";
}
protected string GetNumberDescription(int value)
{
if (value >= veryBigNumber)
return veryBigNumberDescription;
if (value >= bigNumber)
return bigNumberDescription;
if (value >= smallNumber)
return smallNumberDescription;
else
return "";
}
Run Code Online (Sandbox Code Playgroud)
2)我注意到在编写if ... else if语句时丢失的代码使用以下格式:
if ...
else if ...
else ...
Run Code Online (Sandbox Code Playgroud)
但不是(至少在概念上)更正确的方式:
if ...
else
if ...
else …Run Code Online (Sandbox Code Playgroud) 我有一个方法来检查某些事情,并根据这些检查返回一个布尔值.它涉及单个分支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) 这是一个微不足道的问题,但我一直在想.
在风格方面(我假设性能相同),在if语句中保留'else'是不是更好?
例如,以下哪项更好:
if (x < 10)
doSomething();
else if (x > 20)
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
要么
if (x < 10)
doSomething();
if (x > 20)
doSomethingElse();
Run Code Online (Sandbox Code Playgroud)
另一个案例:
if (x < 10)
return;
else doSomething();
Run Code Online (Sandbox Code Playgroud)
要么
if (x < 10)
return;
doSomething();
Run Code Online (Sandbox Code Playgroud)
谢谢,
卢克