為什么省略花括號被認(rèn)為是一種不好的做法?為什么每個人都告訴我寫這樣的代碼是一種糟糕的做法?if (foo)
Bar();//orfor(int i = 0 i < count; i++)
Bar(i);我對省略花括號最大的理由是,有時花括號的行數(shù)可能是它們的兩倍。例如,這里有一些代碼可以為C#中的標(biāo)簽繪制發(fā)光效果。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在一起不需要縮進(jìn)一百萬次。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}大括號最常見的論點(diǎn)是以維護(hù)編程為中心,以及在原始if語句與其預(yù)期結(jié)果之間插入代碼會產(chǎn)生的問題:if (foo)
Bar();
Biz();問題:想要使用語言提供的更簡潔的語法是錯誤的嗎?設(shè)計這些語言的人都很聰明,我無法想象他們會提供一個總是不好使用的特性。我們應(yīng)該還是不應(yīng)該編寫代碼,這樣最低的公分母才能理解,并且不存在使用它的問題?我錯過了另一個爭論嗎?
添加回答
舉報
0/150
提交
取消
