ทำไมทุกคนบอกให้ฉันเขียนโค้ดแบบนี้เป็นการปฏิบัติที่ไม่ดี?
if (foo)
Bar();
//or
for(int i = 0 i < count; i++)
Bar(i);
อาร์กิวเมนต์ที่ใหญ่ที่สุดของฉันสำหรับการละเว้นวงเล็บปีกกาคือบางครั้งมันอาจเป็นสองเท่าของบรรทัดกับพวกเขา ตัวอย่างเช่นต่อไปนี้เป็นโค้ดบางส่วนที่ใช้ระบายสีเอฟเฟกต์แสงสำหรับฉลากใน 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 (foo)
Bar();
Biz();
คำถาม:
- ผิดหรือไม่หากต้องการใช้ไวยากรณ์ขนาดกะทัดรัดที่ภาษาเสนอให้ คนที่ออกแบบภาษาเหล่านี้ฉลาดฉันไม่สามารถจินตนาการได้ว่าพวกเขาจะใส่คุณสมบัติที่ไม่ดีให้ใช้เสมอ
- เราหรือเราไม่ควรเขียนโค้ดเพื่อให้ส่วนร่วมที่ต่ำที่สุดสามารถเข้าใจและไม่มีปัญหาในการทำงาน
- มีอีกเหตุผลที่ฉันขาดหายไปหรือไม่?