1. ホーム
  2. java

[解決済み] 中括弧を省略することは、なぜ悪い習慣と考えられているのですか?[閉じる]

2022-04-20 15:38:03

質問

どうしてみんな、こんな風にコードを書くのは悪い習慣だと言うんだろう?

if (foo)
    Bar();

//or

for(int i = 0 i < count; i++)
    Bar(i);

中括弧を省略する最大の理由は、中括弧があると2倍の行数になってしまうことがあるからです。たとえば、次のコードは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));

を連鎖させることで、さらに効果を高めることができます。 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();


質問

  1. その言語が提供する、よりコンパクトな構文を使いたいと思うのは間違いでしょうか?このような言語を設計する人たちは頭が良いので、常に使い勝手の悪い機能を搭載するとは思えません。
  2. 最小公倍数が理解でき、問題なく作業できるようなコードを書くべきか、書くべきでないか?
  3. 他に私が見逃している論点はありますか?

解決方法は?

実は、今までで本当に噛みついたのは、デバッグ中にbar()をコメントアウトした時だけなんです。

if(foo)
  // bar();
doSomethingElse();

それ以外は、使うことが多いですね。

if(foo) bar();

これで上記のケースは解決です。

EDIT 質問を明確にしてくれてありがとう、私は同意します、私たちは最小公倍数に合わせてコードを書くべきではないのです。