为什么每个人都告诉我这样写代码是一种不好的做法?
if (foo) Bar(); //or for(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)); } } } //versus 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));
您还可以获得链接usings在一起的额外好处,而无需缩进一百万次。
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 } } } //versus using (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();
实际上,唯一真正让我感到痛苦的是在我调试时,并注释掉了 bar():
if(foo) // bar(); doSomethingElse();
除此之外,我倾向于使用:
if(foo) bar();
它处理了上述情况。
编辑 感谢您澄清问题,我同意,我们不应该将代码写入最低公分母。