Perché tutti mi dicono che scrivere codice come questo è una cattiva pratica?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
Il mio più grande argomento per omettere le parentesi graffe è che a volte può essere il doppio delle linee con loro. Ad esempio, ecco un codice per dipingere un effetto bagliore per un'etichetta in 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));
Puoi anche ottenere l'ulteriore vantaggio di concatenarti usings
insieme senza dover rientrare un milione di volte.
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
}
L'argomento più comune per le parentesi graffe ruota attorno alla programmazione di manutenzione e ai problemi che ne deriverebbero inserendo il codice tra l'istruzione if originale e il risultato previsto:
if (foo)
Bar();
Biz();
Domande:
- È sbagliato voler usare la sintassi più compatta offerta dalla lingua? Le persone che progettano queste lingue sono intelligenti, non riesco a immaginare che metterebbero una funzione che è sempre male da usare.
- Dovremmo o non dovremmo scrivere codice in modo che il minimo comune denominatore possa capire e non avere problemi a lavorarci?
- C'è un altro argomento che mi manca?