จากหนังสือ Good code, Bad code นั้น
จะเน้นในเรื่องของความรู้และความสามารถพื้นฐานของการพัฒนา
เพื่อช่วยให้พัฒนาระบบให้เป็นไปตามเป้าหมายที่ตั้งไว้
โดยในเรื่องของ Code Quality นั้นมีคำแนะนำที่สำคัญ 6 อย่างไว้ให้
จึงทำการสรุปการอ่านไว้นิดหน่อย

ข้อที่ 1 Make code readable

เป็นเรื่องที่พูดถึงตลอด แต่มันก็ต้องดูความสามารถของทีมด้วยเช่นกัน
โดย code ที่ดีควรจะ
บอกได้ว่าทำอะไร
บอกได้ว่าทำงานอย่างไรต้องมี input หรือ state อะไรบ้าง
หลังจากที่ code ส่วนนั้นทำงานแล้ว จะได้ผลลัพธ์อะไรออกมาที่ชัดเจน

ถ้าเป็น code ที่ไม่ดี จะตอบสิ่งที่อธิบายมากยากขึ้นเรื่อย ๆ
แน่นอนว่า ส่งผลต่อเวลาในการพัฒนาอย่างแน่นอน

ข้อที่ 2 Avoid surprises

หลาย ๆ จะเคยบอกว่า code ชุดนี้
เดี๋ยวมันก็ทำงานได้ เดี๋ยวก็ทำงานไม่ได้
หรือผิดพลาด ทั้ง ๆ ที่ยังไม่แก้ไขอะไรเลย
แก้ไขตรงนี้ กระทบตรงไหนก็ไม่รู้
ถ้าเจอปัญหาแบบนี้บ่อย ๆ เราจะทำอย่างไรดี ?

ข้อที่ 3 Make code hard to misuse

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

ข้อที่ 4 Make code modular

เรื่องของ modular จะช่วยให้เรา
สามารถแบ่งการทำงานออกเป็นส่วนเล็ก ๆ ที่จบในตัวเอง
จากนั้นแต่ละส่วนสามารถนำมาประกอบ
หรือแยกกันทำงานได้ง่าย
รวมทั้งง่ายต่อการเปลี่ยนแปลงอีกด้วย

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

เมื่อพัฒนาเป็น modular แล้วก็ระวังเรื่องของการเรียกใช้งานข้าม modular ด้วย !!

ข้อที่ 5 Make code reusable and generalizable

code ที่ดีต้องสามารถ reuse ได้
ถ้ามีการใช้งานหรือทำงานเหมือนกันจริง ๆ
แต่ต้องระวังการ over-reuse ด้วย

เราจะ reuse เมื่อเกิดการใช้ซ้ำ
ถ้าไม่ซ้ำก็อย่าไปพยายาม reuse

อีกอย่างคือ เมื่อต้องแก้ไข ต้องระวังเรื่องผลกระทบเช่นกัน
code ที่สามารถ reuse ก็มาจาก modular นั่นเอง

ข้อที่ 6 Make code testable and test it properly

ในการสร้าง แก้ไข และลบ code นั้นสิ่งที่ต้องคิดคือ ผลกระทบที่ตามมา
ดังนั้นเราจำเป็นต้องทดสอบด้วยว่า code เหล่านั้น
ยังคงทำงานตามที่คาดหวังไว้หรือไม่

โดย code ที่ดีจำเป็นต้องคิดเรื่องของ code ที่ testable ด้วย
เพื่อตอบโจทย์ที่เราต้องการ
ซึ่งการทดสอบมีหลาย level เช่น

  • Unit test
  • Integration test
  • End-to-End test

ถ้าเราไม่ได้คิดเรื่องเหล่านี้ไว้ ก็เป็นไปได้ยากที่จะทดสอบ
และรู้ผลกระทบจากการเปลี่ยนต่าง ๆ
ทำให้เข้าสู่วัฎจักรการพัฒนาแบบเดิม ๆ !!

ทั้ง 6 ข้อน่าจะพอเป็นแนวทางในการพัฒนาระบบงาน
เพื่อเพิ่มคุณภาพของ code ให้ดียิ่งขึ้น


ขอให้สนุกกับการเขียน code