การย้ายเงื่อนไขในฟังก์ชันขึ้นไป
- หากมีเงื่อนไข
if อยู่ภายในฟังก์ชัน ให้พิจารณาย้ายมันไปยังฝั่งผู้เรียก (caller)
- แทนที่ฟังก์ชันจะตรวจสอบเงื่อนไขเบื้องต้นภายในแล้ว "ไม่ทำอะไรเลย" เมื่อเงื่อนไขไม่เป็นจริง ควรให้ผู้เรียกเป็นผู้ตรวจสอบเงื่อนไขเบื้องต้น เพื่อให้มั่นใจผ่านระบบชนิดข้อมูลได้ว่าเงื่อนไขนั้นเป็นจริงแล้ว
- โดยเฉพาะเมื่อ "ย้ายขึ้น" เงื่อนไขเบื้องต้น อาจช่วยลดงานตรวจสอบโดยรวมได้ และนี่คือหนึ่งในแรงจูงใจของกฎข้อนี้
การย้ายลูปลงไป
- เป็นกฎที่มาจากแนวคิดแบบ data-oriented โดยนำแนวคิดเรื่อง 'batch' ของอ็อบเจ็กต์เข้ามา และถือให้งานแบบ batch เป็นกรณีพื้นฐาน ส่วนเวอร์ชัน scalar เป็นเพียงกรณีพิเศษของเวอร์ชัน batch
- ประโยชน์หลักคือการเพิ่มประสิทธิภาพ โดยสามารถกระจายต้นทุนเริ่มต้นและมีความยืดหยุ่นต่อ ลำดับการประมวลผล
- ตัวอย่างเช่น การคูณพหุนามด้วย FFT อาจประเมินพหุนามหลายจุดพร้อมกันได้เร็วกว่า การประเมินแยกทีละจุด
ความเห็นของ GN⁺
- ประเด็นสำคัญที่สุดของบทความนี้คือกฎการเขียนโปรแกรมสองข้อเพื่อปรับปรุงประสิทธิภาพและความชัดเจนของโค้ดในการพัฒนาซอฟต์แวร์ ได้แก่ 'การย้ายเงื่อนไขขึ้น' และ 'การย้ายลูปลง'
- กฎเหล่านี้ช่วยเพิ่มความอ่านง่ายของโค้ด ปรับแต่งประสิทธิภาพ และลดโอกาสเกิดบั๊ก
- บทความนี้น่าสนใจและมีประโยชน์สำหรับนักพัฒนาจำนวนมาก เพราะให้มุมมองต่อการจัดการความซับซ้อนของวิศวกรรมซอฟต์แวร์และการเขียนโค้ดอย่างมีประสิทธิภาพ
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ifควรอยู่ด้านบนของฟังก์ชัน ไม่ใช่ด้านล่าง และข้อผิดพลาดควรถูกส่งต่ออย่างเหมาะสมwalrusจึงไม่สามารถย้ายifขึ้นไปด้านบนได้ifไปให้ผู้เรียกตรวจสอบเองเป็นความคิดที่แย่มาก แม้ในกรณีพิเศษอาจเป็นความคิดที่ดี แต่โดยทั่วไปแล้วไม่ควรทำ ในไลบรารีควรตรวจสอบ precondition ที่ขอบเขตภายนอก เพื่อให้การทำงานภายในดำเนินต่อไปได้โดยไม่ต้องพึ่งสมมติฐานภายใน การพึ่งให้ผู้เรียกเป็นฝ่ายตรวจสอบทำให้จุดประสงค์นั้นหมดความหมาย