为什么每个人都告诉我编写这样的代码是一种糟糕的做法?
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
链接在一起的额外好处,而不必缩进一百万次。
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();