Tại sao mọi người bảo tôi viết mã như thế này là một thực hành xấu?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
Lập luận lớn nhất của tôi về việc bỏ qua các dấu ngoặc nhọn là đôi khi nó có thể gấp đôi số dòng với chúng. Ví dụ, đây là một số mã để vẽ hiệu ứng phát sáng cho nhãn trong 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));
Bạn cũng có thể nhận được thêm lợi ích của việc xâu chuỗi usings
lại với nhau mà không phải thụt lề một triệu lần.
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
}
Đối số phổ biến nhất cho dấu ngoặc nhọn xoay quanh lập trình bảo trì và các vấn đề sẽ xảy ra bằng cách chèn mã giữa câu lệnh if gốc và kết quả dự định của nó:
if (foo)
Bar();
Biz();
Câu hỏi:
- Có sai không khi muốn sử dụng cú pháp nhỏ gọn hơn mà ngôn ngữ cung cấp? Những người thiết kế các ngôn ngữ này rất thông minh, tôi không thể tưởng tượng được họ sẽ sử dụng một tính năng luôn xấu khi sử dụng.
- Chúng ta nên hay không nên viết mã để mẫu số chung thấp nhất có thể hiểu và không có vấn đề gì khi làm việc với nó?
- Có một lập luận khác mà tôi đang thiếu?