Pourquoi tout le monde me dit qu'écrire du code comme ça est une mauvaise pratique ?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
Mon principal argument en faveur de l'omission des accolades est qu'il y a parfois deux fois plus de lignes avec elles. Par exemple, voici du code pour peindre un effet lumineux pour une étiquette en 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));
Vous pouvez également bénéficier de l'avantage supplémentaire d'enchaîner usings
sans avoir à faire des millions d'alinéas.
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'argument le plus courant en faveur des accolades tourne autour de la programmation de maintenance et des problèmes qui résulteraient de l'insertion de code entre l'instruction if originale et le résultat escompté :
if (foo)
Bar();
Biz();
Questions :
- Est-ce une erreur de vouloir utiliser la syntaxe plus compacte qu'offre la langue ? Les personnes qui conçoivent ces langages sont intelligentes, je ne peux pas imaginer qu'elles mettraient une fonctionnalité qui est toujours mauvaise à utiliser.
- Devons-nous ou ne devrions-nous pas écrire le code de manière à ce que le plus petit dénominateur commun puisse le comprendre et n'ait aucun problème à travailler avec lui ?
- Y a-t-il un autre argument qui m'échappe ?