Neden herkes bana böyle bir kod yazmanın kötü bir uygulama olduğunu söylüyor?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
Kıvırcık parantezleri atlamakla ilgili en büyük argümanım, bazen onlarla iki kat daha fazla çizgi olabileceğidir. Örneğin, C # içindeki bir etiket için bir parlama efekti boyamak için bazı kodlar.
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
Milyonlarca kez girintiye girmek zorunda kalmadan zincirleme yapmanın ek avantajını da elde edebilirsiniz .
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
}
Kıvırcık parantezler için en yaygın argüman, bakım programlaması ve orijinal if ifadesi ve amaçlanan sonucu arasına kod ekleyerek ortaya çıkabilecek sorunlar etrafında döner:
if (foo)
Bar();
Biz();
Sorular:
- Dilin sunduğu daha kompakt sözdizimini kullanmak yanlış mı? Bu dilleri tasarlayan insanlar akıllıdır, her zaman kullanımı kötü bir özellik koyacaklarını düşünemiyorum.
- En düşük ortak paydayı anlamak ve onunla çalışmakta sorun yaşamamak için kod yazmalı mıyız veya yapmamalı mıyız?
- Kaçırdığım başka bir argüman var mı?