您是否将条件代码放在新行上或仅在有时?

max*_*axp 2 layout

我通常会一直编写条件代码

if (number==1) 
    name="a";
if (number==2)
    name="b";
Run Code Online (Sandbox Code Playgroud)

不管多短,虽然我找到了相当多的人写作

if (number==1) name ="a";
if (number==2) name ="b"...
Run Code Online (Sandbox Code Playgroud)

对我来说这似乎不一致,实际上使代码看起来更麻烦.

做这个的最好方式是什么?

Uri*_*Uri 17

编码风格是最激烈争论的主题之一(通常具有宗教热情).关于这个问题有很多资源,我会尝试找到这些链接.

无论哪种方式,我都喜欢用花括号包裹每一个这样的条件; 我的经验是,如果添加或省略线条,它们会使身体更加明显,并降低出错的风险.

  • 我从C教学中获得的经验是,许多错误来自于学生没有添加牙套,然后遭受不小心添加和删除的后果.你会对学生如何搞砸这个问题感到惊讶.从我所看到的,他们也在高年级做到了,所以他们很可能在现实世界中这样做. (2认同)

Jho*_*re- 8

我更喜欢你的第一个选择,但更好的是:

if (number == 1) { 
    name = "a";
}
if (number == 2) {
    name = "b";
}
Run Code Online (Sandbox Code Playgroud)

在简单的视图中稍微长一些,但是当if变得大于一行时我不必添加括号(我经常认为)


GMa*_*ckG 7

我总是写同样的条件:

if (number == 1)
{
    name = "a";
}
else if (number == 2)
{
    name = "b";
}
Run Code Online (Sandbox Code Playgroud)

它易于阅读和一致.与包含多个语句的if语句一致......


编辑

为了扩展这个,我尝试遵循这个规则:

每一行都做一件事.

也就是说,每一行应该执行一个语句(范围应该很容易看到).所以我不喜欢:

if (number==1) name ="a";
Run Code Online (Sandbox Code Playgroud)

因为在一行上发生了两件事,这使得阅读和调试比应该更加困难.所以我会转到:

if (number==1)
    name ="a";
Run Code Online (Sandbox Code Playgroud)

但这有一个问题,即如果与多语句不一致.这就是为什么(正如其他人所说的那样)将括号放在周围的东西是好的:

if (number==1)
{
    name ="a";
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢它自己的'{'的原因是当我扫描代码时,我可以快速识别范围开始和结束的位置.它也遵循一个语句规则,因为让'if'和'{'执行if语句启动一个新范围.

我不认为,"它保存了垂直空白"是一个足够的理由,可以跳过可读性和良好的格式化(两个{}在同一列==性感).这是因为考虑到今天的显示器的分辨率,您不需要努力查看代码.