Layout 您是将条件代码放在新行上还是仅在某些时候?

Layout 您是将条件代码放在新行上还是仅在某些时候?,layout,Layout,我通常会按照 if (number==1) name="a"; if (number==2) name="b"; 尽管我发现很多人都在写 if (number==1) name ="a"; if (number==2) name ="b"... 对我来说,这似乎不一致,实际上使代码看起来更混乱 做这件事的最佳方式是什么?编码风格是争论最激烈的话题之一(通常带有宗教狂热)。 关于这个问题有很多参考资料,我将尝试查找链接 不管怎样,我都喜欢用卷曲的背带把身体包裹起来;我的经验是

我通常会按照

if (number==1) 
    name="a";
if (number==2)
    name="b";
尽管我发现很多人都在写

if (number==1) name ="a";
if (number==2) name ="b"...
对我来说,这似乎不一致,实际上使代码看起来更混乱


做这件事的最佳方式是什么?

编码风格是争论最激烈的话题之一(通常带有宗教狂热)。 关于这个问题有很多参考资料,我将尝试查找链接


不管怎样,我都喜欢用卷曲的背带把身体包裹起来;我的经验是,如果添加或省略行,它们会使主体更加可见,并降低出错的风险。

我也这样做(在java中),而且我总是添加大括号,即使只有一行,也根本不起作用,并消除了一个典型的bug源。

我更喜欢您的第一个选项,但更好的是:

if (number == 1) { 
    name = "a";
}
if (number == 2) {
    name = "b";
}

在“简单视图”中稍长一点,但当if大于一行时,我不必添加括号(我认为经常如此)

当然,这纯粹是风格问题。一般来说,额外的空间是舒适的。然而,有时把这些东西浓缩起来似乎是合适的。一般来说,我只会在变量赋值时这样做,而不会做其他事情


我总是喜欢让代码看起来应该是一样的,也就是说,单个if语句应该看起来总是一样的。我通常甚至用大括号来表示,这样就可以清楚地知道什么是什么。

我只使用第一个选项。更容易阅读,更容易在条件中设置断点

我总是用同样的方式写条件句:

if (number == 1)
{
    name = "a";
}
else if (number == 2)
{
    name = "b";
}
它易于阅读且一致。与包含多个语句的if语句一致,等等


编辑 为了进一步说明这一点,我尝试遵循以下规则:

每一行做一件事

也就是说,每行应该执行一条语句(并且范围应该很容易看到)。因此,我不喜欢:

if (number==1) name ="a";
因为在一行上发生了两件事,这使得读取和调试比应该的要困难。因此,我想谈谈:

if (number==1)
    name ="a";
但这有一个问题,即它与多语句if不一致。这就是为什么(正如其他人所说)在事物周围放括号是好的:

if (number==1)
{
    name ="a";
}
我喜欢在它自己的行中使用“{”的原因是,当我扫描代码时,我可以快速确定作用域的开始和结束位置。它还遵循单语句规则,因为使用“if”和“{”会执行一个if语句并启动一个新的作用域

我不认为“它节省了垂直空白”是跳过可读性和良好格式(同一列上的两个{}==sexy)的充分理由。这是因为考虑到当今显示器的分辨率,您不需要费力地查看代码。

我更喜欢:

if (number==1) { 
    name="a";
}
if (number==2) name="b";

每当我使用括号时,我就开始换行。

它在代码可读性方面的差异可以忽略不计,你想怎么做就怎么做。编写好代码,让你的IDE知道它应该是什么样子。

我使用以下样式

if (number == 1) 
{
   name = "a";
}
else if (number == 2)
{
   name = "b";
}
if (number == 1) {
   name = "a";
}
这样可以避免插入新行时出现错误

if (number == 1) 
   DoSomething();
   name = "a";
if number == 1:
    name = "a"
elif number == 2:
    name = "b"
else:
    raise ValueError()
现在
name=“a”
不再是有条件的。目前我正在考虑更改为以下样式

if (number == 1) 
{
   name = "a";
}
else if (number == 2)
{
   name = "b";
}
if (number == 1) {
   name = "a";
}

通过这种方式,文本结构更能反映控制结构,但我仍在考虑这一点。

我坚信,如果要将语句放在条件后面的一行,请将其用大括号括起来。要给出@Daniel的观点的一个具体示例,如果我正在调试:

if (number==1) name="a"; if (number==2) name="b"; 如果(数字==1) name=“a”; 如果(数字==2) name=“b”; …我很想这么做:

if (number==1) print "Hit the first conditional\n"; name="a"; if (number==2) print "No, hit the second conditional\n"; name="b"; 如果(数字==1) 打印“命中第一个条件\n”; name=“a”; 如果(数字==2) 打印“否,点击第二个条件\n”; name=“b”; …运行时的欢闹随之而来

如果“if(inputVar==null)return;”等简单明了的语句,我偶尔会将一行命令放在与“if”语句相同的行上。但作为一般规则,如果我缩进单个命令(而不是跨多行的单个大命令)*,我总是希望把它们放在牙套里。这样我就少惹麻烦了


*--好的,从技术上讲,那些单命令if语句实际上是跨多行的单命令。但是如果我不小心在多行方法调用的中间插入了一个命令,编译器会在我太困惑之前吐出来。

就我个人而言,我喜欢在一行上列出条件,当且仅当有我想比较一下它们的集合

if      (iTerm >= Ps.missed_runs)   iTerm -= Ps.missed_runs;
else if (iTerm <= Ps.missed_runs)   iTerm += Ps.missed_runs;
else                                iTerm  = 0;
现在,这些比较彼此距离较远,而且没有对齐到一列。眼睛更难发现错误

另外,您注意到第二个代码示例中故意出现的错误了吗

Hugo

Microsoft C#最佳实践表明,在单行条件句中使用大括号。我个人觉得这更具可读性。如果语言合适,我也倾向于在其他语言中使用这种习惯

if (myVar == 0)
{
    return false;
}

Python几乎强迫您这样做,所以是的,条件代码总是在新行上

if (number == 1) 
   DoSomething();
   name = "a";
if number == 1:
    name = "a"
elif number == 2:
    name = "b"
else:
    raise ValueError()

好的,我需要一些反对票。这真的很难看,但我认为这有一个很好的理由:

 if (false){}
else if (variable == aValue){
  ... code ...
}
else if (variable == anotherValue){
  ... code ...
}
... more cases ...
else {
  ... code ...
}
原因是没有分支(除了
else
)与其他分支不同,因此很容易对它们重新排序或在开始时插入新分支


事实上,如果我是从另一个程序生成这段代码,它确实简化了生成器。

我几乎总是把它放在不同的行上,但我有点灵活。如果代码在同一行上可读性更好,因为一行中的许多语句非常相似,我可能会在一行上这样做,以帮助演示sim卡ilarity,但我会寻找一种通过重构来消除相似性的方法。

在单行上放置条件时,我使用单行格式:

toggled = (on == true ) ? true : false;
但是,如果有多个情况,我可能会使用switch语句,则这不起作用:

switch ( number ) {
  case 1: a;
   break;

  case 2: b;
   break;
    a;
}
为了你的特殊考试