我一直在推荐我的新公司的代码,我发现代码并没有包含在IF和ELSE中,所以在流程中有点混乱。例如:
if(user_is_registered)
{
// You are already registered.
//exit
}
//New user's registration code goes here
虽然我的上一家公司正在遵循另一种方式,即:
if(user_is_registered)
{
// You are already registered.
}
else
{
//New user's registration code goes here
}
像每一个新鲜的人一样,我很困惑,这是最合理的理由。请赐教。我试图找到相同的答案,但无法得到。一些专家正在支持方式1,有些专家正在支持方式2,如果有的话,还请建议其他参考。谢谢。
答案 0 :(得分:3)
这可能是为了避免嵌套而作出的决定。在您的示例中,它不是立即明显的,但如果在注册逻辑中还有更多IF
,LOOP
等语句,则嵌套开始发生。
作为一般规则,应该避免嵌套并重构,因为它会妨碍理解,并且通常表明该方法做得太多。
e.g。
if ( user_is_registered )
{
// do something & return
}
else
{
// do something else
if ( some_other_condition )
{
// do another thing
while (something_is_not_true)
{
// loopy things
}
}
}
答案 1 :(得分:1)
当您使用else
时,您构建了非常明确的逻辑。通过单独的if
语句,您可以在给定条件下应用多个规则块。
可能是被比较的对象满足多个要求,因此Else
不会有任何好处。
举个例子:
var x = 10;
if (x < 11){
// do something
// - this gets hit
}else{
// do something else
}
// perhaps i want to have multiple conditions that x meets..
if (x < 11){
// do something
// - this gets hit
}
if {x == 10){
// do something
// - this gets hit - provided the if before didn't make changes to X
}
if (x != 10){
// do something - this won't be hit, unless a previous if made changes to x
}
现在 - 当您采用特定示例时,如果没有办法退出方法,则第一个区块中的//New user's registration code goes here
将始终触发,就像if
中的方法一样。在你的第二个区块中,只有在if
不匹配时才会触发。
就个人而言,我会在if / else中包装,在这种情况下,并明确代码和意图。
答案 2 :(得分:0)
如果只想在if语句中的条件失败时执行代码块,则将该块添加为if语句的else部分。这些陈述是独家的。只执行if块或else块,而不是两者都执行。
如果希望始终执行代码块,请在if语句后包含块。该块始终执行。