ในทางเทคนิคไม่มี แต่อย่างแน่นอนใช่ !!!
ลืมเรื่อง "มันเป็นความชอบส่วนตัว", "รหัสจะทำงานได้ดี", "มันใช้งานได้ดีสำหรับฉัน", "อ่านง่ายขึ้น" yada yada BS นี้ได้อย่างง่ายดายอาจนำไปสู่ปัญหาร้ายแรงมากถ้าคุณทำผิดพลาดและฉันเชื่อว่ามันเป็นเรื่องง่ายมากที่จะทำผิดพลาดเมื่อคุณได้รับการเข้ารหัส (Do not belive ?, ตรวจสอบที่มีชื่อเสียงแอปเปิ้ลไปที่จะล้มเหลวข้อผิดพลาด )
อาร์กิวเมนต์: "มันเป็นความชอบส่วนตัว"
ไม่มันไม่ใช่. นอกจากคุณจะเป็นทีมชายเพียงคนเดียวที่ยังคงเป็นดาวอังคารอยู่ เวลาส่วนใหญ่จะมีคนอื่นอ่าน / แก้ไขรหัสของคุณ ในทีมการเข้ารหัสที่จริงจังนี่จะเป็นวิธีที่แนะนำดังนั้นจึงไม่ใช่ 'ความชอบส่วนตัว'
อาร์กิวเมนต์: "รหัสจะทำงานได้ดี"
ดังนั้นรหัสสปาเก็ตตี้ไม่! มันหมายความว่าไม่เป็นไรที่จะสร้างมันขึ้นมา?
อาร์กิวเมนต์: "มันทำงานได้ดีสำหรับฉัน"
ในอาชีพของฉันฉันได้เห็นข้อบกพร่องมากมายที่สร้างขึ้นเนื่องจากปัญหานี้ คุณอาจจำไม่ได้ว่ากี่ครั้งที่คุณแสดงความคิดเห็น'DoSomething()'
และรู้สึกงงงวยว่าทำไมถึง'SomethingElse()'
ถูกเรียกว่า:
if (condition)
DoSomething();
SomethingElse();
หรือเพิ่ม 'SomethingMore' และไม่ได้สังเกตว่าจะไม่ถูกเรียก (แม้ว่าการเยื้องจะมีความหมายเป็นอย่างอื่น):
if (condition)
DoSomething();
SomethingMore();
นี่คือตัวอย่างชีวิตจริงของฉัน มีคนต้องการเปลี่ยนการบันทึกทั้งหมดเพื่อให้พวกเขาเรียกใช้ find & replace "console.log"
=> //"console.log"
:
if (condition)
console.log("something");
SomethingElse();
เห็นปัญหาไหม
แม้ว่าคุณจะคิดว่า "สิ่งเหล่านี้ช่างน่ารำคาญเหลือเกินฉันก็จะไม่ทำอย่างนั้น"; จำไว้ว่าจะมีสมาชิกในทีมที่มีทักษะการเขียนโปรแกรมด้อยกว่าคุณเสมอ (หวังว่าคุณจะไม่ได้แย่ที่สุดในทีม!)
อาร์กิวเมนต์: "อ่านง่ายกว่า"
ถ้าฉันได้เรียนรู้อะไรเกี่ยวกับการเขียนโปรแกรมมันเป็นสิ่งที่เรียบง่ายซับซ้อนมากอย่างรวดเร็ว เป็นเรื่องธรรมดามากที่จะ:
if (condition)
DoSomething();
เปลี่ยนเป็นสิ่งต่อไปนี้หลังจากได้รับการทดสอบด้วยเบราว์เซอร์ / สภาพแวดล้อม / กรณีการใช้งานที่แตกต่างกันหรือเพิ่มคุณสมบัติใหม่:
if (a != null)
if (condition)
DoSomething();
else
DoSomethingElse();
DoSomethingMore();
else
if (b == null)
alert("error b");
else
alert("error a");
และเปรียบเทียบกับสิ่งนี้:
if (a != null) {
if (condition) {
DoSomething();
}
else {
DoSomethingElse();
DoSomethingMore();
}
} else if (b == null) {
alert("error b");
} else {
alert("error a");
}
PS: คะแนนโบนัสไปที่ผู้สังเกตเห็นข้อผิดพลาดในตัวอย่างข้างต้น