Почему все говорят мне писать код, как будто это плохая практика?
if (foo)
    Bar();
//or
for(int i = 0 i < count; i++)
    Bar(i);
Мой самый большой аргумент в пользу упущения фигурных скобок заключается в том, что иногда они могут быть в два раза больше строк. Например, вот какой-то код для рисования эффекта свечения для метки на С#.
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 вместе без необходимости отступа в миллион раз.
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
}
Наиболее распространенный аргумент для фигурных скобок вращается вокруг программирования технического обслуживания и проблем, возникающих при вставке кода между исходным оператором if и его предполагаемым результатом:
if (foo)
    Bar();
    Biz();
Вопросы:
- Неправильно ли вам использовать более компактный синтаксис, который предлагает язык? Люди, которые разрабатывают эти языки, умны, я не могу себе представить, что они будут использовать функцию, которая всегда будет плохой.
- Должны ли мы или не должны писать код, поэтому самый низкий общий знаменатель может понять и не иметь проблем с этим?
- Есть ли еще один аргумент, который мне не хватает?
