单一决策和行动声明的首选风格是什么?

rjz*_*zii 3 language-agnostic language-features readability

对于支持单一决策和没有括号的操作的语言,例如以下示例:

if (var == true)
    doSomething();
Run Code Online (Sandbox Code Playgroud)

写这个的首选方式是什么?是否应始终使用括号,还是应将其使用留作个别开发人员的偏好?此外,这种做法是否取决于代码块的大小,例如在以下示例中:

if (var == 1)
    doSomething(1);
else if (var > 1 && var < 10)
    doSomething(2);
else
{
    validate(var);
    doSomething(var);
}
Run Code Online (Sandbox Code Playgroud)

sti*_*mms 10

没有一个正确的答案.这就是公司内部的编码标准.如果你能在整个公司保持一致,那么它将很容易阅读.我个人喜欢

if ( a == b)    {
    doSomething();
}
else {
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

但这是一场圣战.


Zom*_*eep 10

我建议

if(a==b)
{
    doSomething();
}
Run Code Online (Sandbox Code Playgroud)

因为我发现前面这么做比在我向成功条件添加第二个语句时尝试记住添加大括号要容易得多...

if(a==b)
    doSomething();
    doSomethingElse();
Run Code Online (Sandbox Code Playgroud)

是非常不同的

if(a==b)
{
    doSomething();
    doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅Joel的文章


Kev*_*Kev 8

我总是喜欢使用牙套.你可以从一开始就得到一些微妙的错误:

if(something)
 DoOneThing();
else
  DoItDifferently();
Run Code Online (Sandbox Code Playgroud)

然后决定向该else子句添加另一个操作,并忘记将其包装在大括号中:

if(something)
 DoOneThing();
else
  DoItDifferently();
  AlwaysGetsCalled(); 
Run Code Online (Sandbox Code Playgroud)

AlwaysGetsCalled()永远都会被召唤,如果你在凌晨3点坐在那里,想知道为什么你的代码表现得很奇怪,那么类似的东西可能会躲过你很长一段时间.仅仅因为这个原因,我总是使用大括号.