coding-standard
เป็นคำถามที่น่าสนใจมาก ๆ
ดังนั้น Developer จงตอบกันหน่อยว่ามีข้อตกลง หรือ นำ Coding Standard มาใช้หรือไม่ ?
ถ้าตอบว่า ใช้ เชิญข้อต่อไป
แต่ถ้าไม่ ให้กลับไปคุยกับทีมซะ !!

คำถาม แล้วใช้ Coding Standard ตัวไหน ?
คำตอบที่น่าจะได้รับคือ
ไม่มี Coding Standard อะไรหรอก
เนื่องจากแต่ละระบบ แต่ละ project ก็ใช้แตกต่างกันไป
ตามความต้องการของงาน
ตามความต้องการของทีม

แต่สิ่งที่ควรทำคือ
ทุก ๆ คนในทีมต้องใช้มาตรฐานเดียวกัน
ใน project เดียวกันต้องใช้มาตรฐานเดียวกัน

คำถาม แล้วคุณทำการเลือก Coding Standard อย่างไร ?

บางคนอาจจะบอกว่า ก็พี่ ๆ ไงล่ะ !!

ในแต่ละภาษาโปรแกรมจะมีกลุ่มของ community
แน่นอนว่าย่อมเกิด Coding Standard หลัก ๆ ของภาษานั้นมากมาย
แถมมีการโต้เถียงจนก่อให้เกิดลัทธิ หรือ กลุ่มย่อย ๆ ของแต่ละภาษาไปอีก
ซึ่งมันเป็นเรื่องปกติ ไม่แปลกอะไร
เช่น

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

คำถาม ในการพูดคุยมักมีความเห็นไม่ตรงกัน จะทำอย่างไรดี ?

เป็นปัญหาหลัก ๆ เลยของการเลือก
มักจะมีความคิดเห็นไม่ตรงกัน
ทั้งจากความชอบส่วนตัว
ทั้งจากประสบการณ์ส่วนตัว
ทั้งจากเขาบอกมา !!

แต่ส่วนใหญ่มักจะมีข้อขัดแย้งกันระหว่าง
ความถูกต้อง vs. ความสวยงาม vs. ตามหลักหรือรูปแบบของภาษานั้น ๆ

ตัวอย่างเช่นปัญหาโลกแตกของ {}

ไม่ว่าจะเป็น Tab vs Spacebar !!
ไม่ว่าจะเป็นรูปแบบการตั้งชื่อ !!
ไม่ว่าจะเป็นโครงสร้างของ code !!
ไม่ว่าจะเป็น …
จะเลือกอะไรดีล่ะ ?

คำถาม คุณต้องเสียเวลา และ มีค่าใช้จ่ายมากเท่าไรในการเลือก ?

ลองถามตัวคุณเองและทีมสิว่า

  • เสียเวลาไปเท่าไรในการพูดคุยกัน แต่สุดท้ายไม่ได้ข้อสรุปอะไรเลย ?
  • พูดคุย และ เถียงกันผ่าน email มากน้อยเพียงใด ?
  • ทำให้ความสัมพันธ์ของคนในทีมแย่ลงไปอีกหรือไม่ ?
  • รู้สึกอย่างไรบ้าง เมื่อต้องเขียน code ในรูปแบบที่ไม่ชอบ ?

จงอย่าเสียเวลาไปกับการเลือกมากนัก เอาแต่พอดี
แต่ให้ลงมือทำในรอบสั้น ๆ
แล้วให้ทีมกลับมาพูดคุยกัน
เพื่อดูว่าสิ่งที่เลือกไปนั้นมันได้ผลออกมาดีหรือแย่อย่างไร
แล้วให้ปรับปรุงอยู่อย่างเสมอ (Continuous Improvement)

ดังนั้นจริง ๆ แล้ว ให้ลองกลับมาดูเป้าหมายของ Coding Standard กันหน่อยไหมว่าคืออะไร ?

เป้าหมายเพื่อให้แนวทางการเขียน code
เป็นไปในทิศทางเดียวกัน
เพื่อทำให้ทีมเดินไปข้างหน้าอย่างพร้อมเพรียงกัน
เพื่อทำให้ทีมเดินไปข้างหน้าได้อย่างรวดเร็ว

บางทีมอาจจะมี Team Lead ที่มากประสบการณ์
เป็นคนเลือกให้ทีมไปเลยก็เป็นได้ !!

คำถามคือ คุณทำการเลือก Coding Standard กันอย่างไรบ้าง ?
อย่าบอกนะว่า ไม่เคยใช้กันเลย
เขียนตามอารมณ์ของตัวเองไปเรื่อย ๆ !!
หรือว่ามีนะ แต่มันอยู่ในเอกสารและกระดาษ !!

แต่ละคนในทีมเขียน code ที่มีรูปแบบเหมือนกันหรือไม่ ?
แล้วรู้ได้อย่างไร ?