为了账号安全,请及时绑定邮箱和手机立即绑定

为什么省略花括号被认为是一种不好的做法?

为什么省略花括号被认为是一种不好的做法?

qq_笑_17 2019-06-18 15:12:59
为什么省略花括号被认为是一种不好的做法?为什么每个人都告诉我写这样的代码是一种糟糕的做法?if (foo)     Bar();//orfor(int i = 0 i < count; i++)     Bar(i);我对省略花括号最大的理由是,有时花括号的行数可能是它们的两倍。例如,这里有一些代码可以为C#中的标签绘制发光效果。using (Brush br = new SolidBrush(Color.FromArgb(15, GlowColor))){     for (int x = 0; x <= GlowAmount; x++)     {         for (int y = 0; y <= GlowAmount; y++)         {             g.DrawString(Text, this.Font, br, new Point(IconOffset + x, y));         }      }  }  //versususing (Brush br = new SolidBrush(Color.FromArgb(15, GlowColor)))     for (int x = 0; x <= GlowAmount; x++)         for (int y = 0; y <= GlowAmount; y++)             g.DrawString(Text, this.Font, br, new Point(IconOffset + x, y));您还可以获得链接的额外好处。usings在一起不需要缩进一百万次。using (Graphics g = Graphics.FromImage(bmp)){     using (Brush brush = new SolidBrush(backgroundColor))     {         using (Pen pen = new Pen(Color.FromArgb(penColor)))         {             //do lots of work         }     }  }//versususing (Graphics g = Graphics.FromImage(bmp))using (Brush brush = new SolidBrush(backgroundColor))using (Pen pen = new   Pen(Color.FromArgb(penColor))){     //do lots of work}大括号最常见的论点是以维护编程为中心,以及在原始if语句与其预期结果之间插入代码会产生的问题:if (foo)     Bar();     Biz();问题:想要使用语言提供的更简洁的语法是错误的吗?设计这些语言的人都很聪明,我无法想象他们会提供一个总是不好使用的特性。我们应该还是不应该编写代码,这样最低的公分母才能理解,并且不存在使用它的问题?我错过了另一个争论吗?
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

实际上,唯一真正咬我的是在调试时,并注释了BAR():

if(foo)
  // bar();doSomethingElse();

除此之外,我倾向于使用:

if(foo) bar();

处理上面的案子。

编辑谢谢你澄清这个问题,我同意,我们不应该把代码写到最低的公分母。


查看完整回答
反对 回复 2019-06-18
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

如果是很小的东西,就写成这样:

if(foo()) bar();

如果它足够长,可以分成两行,使用大括号。


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 321 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信