为什么每个人都告诉我像这样写代码是一种糟糕的做法?
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();
问题:
发布于 2008-12-11 15:39:15
实际上,唯一让我感到头疼的是我在调试的时候,并且注释掉了bar():
if(foo)
// bar();
doSomethingElse();
除此之外,我倾向于使用:
if(foo) bar();
它负责处理上面的情况。
EDIT谢谢你澄清了这个问题,我同意,我们不应该写最小公分母的代码。
发布于 2008-12-11 22:58:52
阅读速度...
除了已经提到的内容之外。此时,我已经习惯于解析带大括号和空格的if语句。所以我读到:
if (condition)
{
DoSomething();
}
DoSomethingElse();
比我读得快一点:
if (condition) DoSomething();
DoSomethingElse();
如果它看起来像这样,我会读得慢一点:
if (condition) DoSomething();
DoSomethingElse();
我读这篇文章的速度比上一篇慢得多:
if (condition)
DoSomething();
DoSomethingElse();
因为我忍不住又读了一遍,以防万一,不知道作者是不是故意的:
if (condition)
{
DoSomething();
DoSomethingElse();
}
已经在一般情况下讨论过了,但是当涉及到下面的阅读时,我将研究很长一段时间以确定作者的意图。我甚至可能会找到原作者来确认。
if (condition)
DoSomething();
DoSomethingElse();
发布于 2008-12-11 15:47:08
如果是小的东西,就写成这样:
if(foo()) bar();
如果它足够长,可以分成两行,使用大括号。
https://stackoverflow.com/questions/359732
复制相似问题