Warum sagt mir jeder, dass das Schreiben von Code wie diesem eine schlechte Praxis ist?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
Mein größtes Argument für das Weglassen der geschweiften Klammern ist, dass es manchmal doppelt so viele Zeilen mit ihnen geben kann. Hier ist beispielsweise ein Code zum Zeichnen eines Glow-Effekts für ein Etikett 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));
Sie können auch den zusätzlichen Vorteil einer Verkettung nutzen, usings
ohne millionenfach einrücken zu müssen.
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
}
Das häufigste Argument für geschweifte Klammern dreht sich um die Wartungsprogrammierung und die Probleme, die durch das Einfügen von Code zwischen der ursprünglichen if-Anweisung und dem beabsichtigten Ergebnis entstehen würden:
if (foo)
Bar();
Biz();
Fragen:
- Ist es falsch, die kompaktere Syntax verwenden zu wollen, die die Sprache bietet? Die Leute, die diese Sprachen entwerfen, sind schlau. Ich kann mir nicht vorstellen, dass sie eine Funktion einsetzen würden, deren Verwendung immer schlecht ist.
- Sollten wir oder sollten wir nicht Code schreiben, damit der kleinste gemeinsame Nenner ihn verstehen kann und keine Probleme damit hat?
- Gibt es ein anderes Argument, das mir fehlt?