หมวดหมู่: technology

Boy Scout Rule: กฎของลูกเสือที่สาย Dev ต้องใช้ — แค่เคลียร์โค้ดให้ดีขึ้นนิดหน่อย ทุกครั้งที่เข้าไปแตะBoy Scout Rule: กฎของลูกเสือที่สาย Dev ต้องใช้ — แค่เคลียร์โค้ดให้ดีขึ้นนิดหน่อย ทุกครั้งที่เข้าไปแตะ

ในโลกของการพัฒนาซอฟต์แวร์ขนาดใหญ่ โครงการต่างๆ มักจะเติบโตอย่างรวดเร็วและมีฟีเจอร์เพิ่มขึ้นเรื่อยๆ ซึ่งเป็นเรื่องปกติ แต่สิ่งที่มักตามมาคือ “หนี้ทางเทคนิค” (Technical Debt) ที่สะสมตัวอยู่เงียบๆ ในโค้ดเบส การปล่อยให้ความยุ่งเหยิงเหล่านี้ทับถมกันโดยไม่มีการดูแล จะทำให้การแก้ไขบั๊กหรือการเพิ่มฟีเจอร์ใหม่ในอนาคตกลายเป็นงานที่ยากลำบากและใช้เวลานานกว่าที่ควรจะเป็น


Boy Scout Rule คืออะไร? แนวคิดการพัฒนาที่ยั่งยืน

หลักการนี้ไม่ได้หมายถึงการหยุดงานเพื่อมา “ทำความสะอาดโค้ด” ครั้งใหญ่ แต่เป็นปรัชญาในการทำงานที่ว่า ทุกครั้งที่เราเข้าไปแตะ (Touch) ส่วนใดส่วนหนึ่งของระบบ ไม่ว่าจะด้วยจุดประสงค์ใดก็ตาม เราควรจะทิ้งมันให้ดีกว่าเดิมเล็กน้อยเสมอ มันคือการปรับปรุงคุณภาพอย่างต่อเนื่องและไม่รู้สึกว่าเป็นภาระ

แก่นแท้ของ Boy Scout Rule คือการเปลี่ยนมุมมองจากการ “แก้ไขปัญหาเฉพาะหน้า” ไปสู่การ “ยกระดับมาตรฐานโดยรวม” เมื่อคุณต้องเพิ่มฟีเจอร์ A และบังเอิญไปแตะไฟล์ที่เกี่ยวข้องกับโมดูล B คุณไม่จำเป็นต้องทำแค่ให้ฟีเจอร์ A ทำงานได้ แต่ควรใช้โอกาสนั้นในการปรับปรุงความชัดเจนของโค้ดในส่วน B เล็กน้อย เช่น การเปลี่ยนชื่อตัวแปรที่ไม่สื่อความหมาย หรือการเพิ่มคอมเมนต์อธิบาย Logic ที่ซับซ้อน


การนำ Boy Scout Rule ไปประยุกต์ใช้ในวงจรงานจริง

  • Refactoring เล็กๆ น้อยๆ (Micro-refactoring): แทนที่จะรอให้มีคนมาจัดงานใหญ่ ให้ปรับปรุงโค้ดส่วนที่อ่านยากที่สุดที่คุณเจอทันที เช่น การแยกฟังก์ชันขนาดใหญ่เกินไปออกเป็นฟังก์ชันย่อยๆ ที่มีความรับผิดชอบเดียว (Single Responsibility Principle)
  • การเพิ่ม Test Coverage: เมื่อคุณต้องแก้ไขโค้ดในไฟล์ใดไฟล์หนึ่ง ให้ถือโอกาสนั้นในการเขียน Unit Test หรือ Integration Test เพิ่มเติมสำหรับส่วนที่เกี่ยวข้อง แม้ว่ามันจะไม่ได้เป็นบั๊กก็ตาม เพื่อให้มั่นใจว่าการเปลี่ยนแปลงของคุณจะไม่กระทบกับ Logic เดิม

การยึดหลักการนี้อย่างสม่ำเสมอจะช่วยให้โค้ดเบสของคุณมีสุขภาพดีอยู่ตลอดเวลา ไม่ใช่แค่รอจนกว่ามันจะพัง การลงทุนเล็กๆ น้อยๆ ในทุกครั้งที่เราเขียนหรือแก้ไขโค้ด คือการป้องกันหนี้ทางเทคนิคที่ใหญ่กว่าในอนาคต และทำให้ทีมพัฒนาสามารถทำงานได้อย่างรวดเร็วและมั่นใจมากขึ้น


อ่านเพิ่มเติม