Mengapa semua orang memberi tahu saya menulis kode seperti ini adalah praktik yang buruk?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
Argumen terbesar saya untuk menghilangkan kurung kurawal adalah kadang-kadang bisa dua kali lebih banyak garis dengan mereka. Sebagai contoh, berikut adalah beberapa kode untuk melukis efek cahaya untuk label dalam 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));
Anda juga bisa mendapatkan manfaat tambahan dari merantai usings
bersama tanpa harus melakukan indentasi jutaan kali.
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
}
Argumen yang paling umum untuk kurung kurawal berkisar pada pemrograman maintance, dan masalah yang akan terjadi dengan memasukkan kode antara pernyataan asli jika pernyataan dan hasil yang dimaksudkan:
if (foo)
Bar();
Biz();
Pertanyaan:
- Apakah salah jika ingin menggunakan sintaks yang lebih ringkas yang ditawarkan bahasa? Orang-orang yang mendesain bahasa ini cerdas, saya tidak bisa membayangkan mereka akan menempatkan fitur yang selalu buruk untuk digunakan.
- Haruskah kita atau tidakkah kita menulis kode sehingga penyebut umum terendah dapat memahami dan tidak memiliki masalah untuk mengatasinya?
- Apakah ada argumen lain yang saya lewatkan?