3r-00
อ่านเจอบทความเรื่อง 3R principles of programming
เป็นแนวปฏิบัติ 3 อย่างเพื่อช่วยทำให้ code ที่เหล่านักพัฒนา software สร้างขึ้นมา
มีความ clean
มีความง่ายต่อการอ่าน
มีความง่ายตอการทำความเข้าใจ
มีความง่ายต่อการดูแลรักษา
ไม่ซับซ้อนมากนัก

จึงทำการแปลและสรุปส่วนที่น่าสนใจมานิดหน่อย

3R principle ประกอบไปด้วย

  • Responsibility
  • Reusability
  • Readability

เริ่มด้วย Responsibility หรือหน้าที่ความรับผิดชอบนั่นเอง

ว่าในแต่ละ class
ว่าในแต่ละ method/function
นั้นควรมีหน้าที่การทำงานอะไรบ้าง

ลองคิดดูสิว่า
ถ้าในแต่ละ class/method/function
มีหน้าที่การทำงานที่เยอะมากมาย
มีหน้าที่การทำงานที่ซับซ้อน
จะส่งผลให้ code โดยรวมออกมาซับซ้อนและยุ่งเหยิงกันมากเพียงใด

ตัวอย่างเช่น
ในแต่ละclass มี 5-20 method
ในแต่ละ method/function มี code มากกว่า 100 บรรทัด
ส่งผลให้ใน class หนึ่งมี code มากกว่า 500-2,000 บรรทัด !!
เชื่อเถอะว่า มันไม่สนุกอย่างแน่นอน

โดยเรื่องของ Responsibility นั้นมาจาก S ใน SOLID principle
นั่นก็คือ Single Responsibility Principle (SRP)

ต่อมาคือผลที่ตามมาจากข้อแรกคือ Reusability

เมื่อเราทำการแยกส่วนการทำงานต่าง ๆ ออกจากกัน
ด้วยหน้าที่การทำงานเฉพาะของ component/class/method/function นั้น ๆ แล้ว
มันก็จะง่ายต่อการ reuse แล้ว
ไม่พอนะ ยังง่ายต่อการทดสอบอีกด้วย

มีคำถามที่น่าสนใจว่าเราจะ Reuse กันเมื่อไร ?
ตอบง่าย ๆ คือ เมื่อมันถูกใช้ซ้ำ ๆ ไงล่ะ
ดังนั้นจงทำให้เกิดการใช้ซ้ำ ๆ ก่อน แล้วจึงคิดถึงการ reuse
อย่าไปเสียเวลาเพื่อคิดว่า เราจะออกแบบอย่างไรเพื่อให้ reuse กันได้นะ

ส่วนการ reuse ได้ดีนั้น ในแต่ละ component/class/method/function ควรที่จะ Readability ด้วยเสมอ

ทั้งการตั้งชื่อที่สื่อถึงการทำงานจริง ๆ
รวมไปถึงโครงสร้างการทำงานด้วยเช่นกัน
มิฉะนั้น code เหล่านั้นจะ reuse ยากมาก ๆ

บ่อยครั้งมักพบว่า code ของระบบงานต่าง ๆ
ต้องใช้เวลาในการเพิ่มและแก้ไขมากขึ้นเรื่อย ๆ
ตามจำนวน feature และอายุของระบบ
สาเหตุหลัก ๆ ก็คือ เรื่องการอ่าน code ไม่รู้เรื่องและ ไม่เข้าใจ
นั่นคือปัญหาเรื่อง Readability

ดังนั้นลองถามตัวเราเองสิว่า
code ที่เราเขียนในปัจจุบันมันอ่านและเข้าใจง่ายหรือไม่ ?
และอย่าลืมว่า code ที่เราเขียนขึ้นมานั้น เขียนเพื่อให้คนอื่นเข้าใจนะ
เนื่องจาก code เหล่านี้ยังต้องถูก maintain ต่อไป

แนะนำให้ทำการเรียนรู้ และ ฝึกฝน
จากนั้นลองนำแนวปฏิบัติ 3R ไปประยุกต์ใช้งานดูครับ
การเขียน code มันสนุกนะ

วันนี้คุณ 3R แล้วหรือยัง ?