เคยฟังเรื่องเล่าตลกๆ เกี่ยวกับการพัฒนาระบบงาน ดังนี้

ระบบงานของเรามี bug เพียงตัวเดียว
ระบบงานน่าจะมี code เพียงบรรทัดเดียว
ดังนั้น สามารถสรุปได้ว่า ถ้าต้องการลด bug ของระบบ ก็ให้ลด code ลงเหลือสัก 1 บรรทัดสิ

จุดที่น่าสนใจก็คือ

ระบบงานทุกๆ ระบบมักจะเริ่มจาก code บรรทัดแรกเสมอ
แล้วมันอย่างไรล่ะ ?

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

ดังนั้น ถ้าเรานำวิธีการ หรือ เครื่องมือมาช่วยดูแล code ให้มันดีๆ
ตั้งแต่เริ่มต้นเขียน code บรรทัดแรกเลย  code มันน่าจะดีกว่าหรือไม่ ??
เช่นพวก Automated tool ต่างๆ เช่นพวก Code review และ Static analysis

เริ่มต้นด้วยการสร้างวัฒนธรรมการทำ Code Review

Code review มันคือ การอ่าน และ ทำความเข้าใจ code ของใครๆ ก็ได้
Code review มันคือ การอ่าน และ ทำความเข้าใจ code ของใครๆ ก็ได้ ก่อนที่จะทำการส่งมอบ code นั้น

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

  • FishEye
  • Pull request
  • ดูจาก commit ต่างๆ ที่ส่งเข้ามาในที่เก็บ code

ซึ่งในองค์กรทั้งใหญ่และเล็ก มักจะให้ใครคนใดคนหนึ่งทำการ review code
ก่อนที่จะส่งมอบงานในแต่ละส่วนไป ทั้งบน dev, test, stagging และ production environment

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

ต่อไปคือ  Static Analysis

ถ้าระบบมี code เพียงบรรทัดเดียว การทำ code review มันจะเป็นเรื่องง่ายมาก
แต่ว่ามันจำเป็นต้องทำไหมนะ ??

ในการทำงานจริงนั้น code จะเยอะมาก ดังนั้น การจะ review code ตรงๆ เลยไม่น่าจะสนุก
ดังนั้น ถ้ามีเครื่องมืออะไรบางอย่าง มาช่วยตรวจสอบสิ่งต่างๆ ใน code เช่น

  • Duplication
  • Low coverage
  • Complexity
  • Potential bug
  • Spaghetti design
  • No standard coding

ซึ่งเครื่องมือที่นิยมใช้งานก็คือ Static Analysis ซึ่งมีอยู่อย่างมากมาย Wikipedia : Static Analysis Tool
โดยเครื่องมือที่ผมใช้งานเช่น

ในการใช้งาน Static Analysis นั้นควรทำงานแบบอัตโนมัติ

ดังนั้นก่อนที่จะทำการ review code ควรทำการตรวจสอบ code ผ่าน Statis Analysis tool ก่อนเสมอ
ซึ่งต้องทำงานแบบอัตโนมัติ เพื่อลดการทำงานแบบ manual ลงไป
ดังนั้น ควรนำ Static Analysis tool ไปไว้ใน Continuous Integration Server ด้วยเสมอ
หรือให้ทำงานหลังจากที่ทำ Continuous Testing ได้เลย
เพื่อให้ได้ feedback ของ code และการทำงานได้อย่างรวดเร็ว

จะสังเกตว่า ในการเริ่มต้นจะใช้เวลาจำนวนมาก

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