ประโยชน์ของ Commit Message
Commit Message ที่ดีช่วยให้การทำงานเป็นทีมมีประสิทธิภาพดียิ่งขึ้น
สิ่งที่สำคัญที่สุดในการทำงานร่วมกันเป็นทีม คือ การสื่อสาร หากการสื่อสารภายในทีมมีประสิทธิภาพ การทำงานของทีมย่อมมีประสิทธิภาพไปด้วย และการสื่อสารกันภายในทีมก็ประกอบไปด้วยหลากหลายช่องทาง ขึ้นอยู่กับวัตถุประสงค์และบริบทของเรื่องที่จะสื่อสารถึงสมาชิกภายในทีม
ในสายงานเกี่ยวกับการพัฒนา Software การทำงานเป็นทีมถือเป็นเรื่องที่มีความสำคัญเป็นอย่างยิ่ง และเป็นหนึ่งในปัจจัยพื้นฐานของความสำเร็จ หากมีทีมพัฒนาที่ดี Software ที่พัฒนาขึ้นมา ก็มีแนวโน้มที่จะประสบความสำเร็จตามเป้าหมายที่วางไว้
ในโลกของการพัฒนา Software สิ่งหนึ่งที่จะขาดไม่ได้ก็คือ Source Control ที่ช่วยให้การทำงานเป็นทีมเป็นไปอย่างมีประสิทธิภาพ และก็เป็นอีกหนึ่งช่องทางการสื่อสารที่หลายทีมมองข้ามและไม่ให้ความสำคัญ นอกจาก Source Code ของ Software แล้ว สิ่งหนึ่งที่สำคัญไม่แพ้กันคือ Commit Message ที่เราเขียนทุกครั้งที่เราทำงานเสร็จ
ทำไม Commit message ถึงสำคัญ??
ความเปลี่ยนแปลงที่เกิดขึ้นกับ Source Code ในการ Commit แต่ละครั้ง บอกได้เพียงว่า "อะไร" ที่เปลี่ยนแปลงไป แต่สิ่งที่จะบอกถึงเหตุผลว่า "ทำไม" ถึงต้องเปลี่ยนก็คือ Commit Message ดังนั้นหากเรามองข้ามในส่วนนี้ก็เปรียบเสมือนเราบอกแค่ว่าเราทำอะไรไป แต่ไม่ได้บอกเหตุผล ว่าทำไม เมื่อปราศจากเหตุผล สมาชิกในทีมทำได้เพียง "รับรู้" แต่ "ไม่เข้าใจ" และเมื่อไม่เข้าใจ ย่อมไม่อาจแก้ไขให้ถูกต้องได้หากมีข้อผิดพลาด
ดังนั้น การเขียน Commit Message ให้ดีจึงเป็นอีกหนึ่งช่องทางในการสื่อสารกันระหว่างสมาชิกในทีมที่มีประสิทธิภาพ นอกจากนี้ Commit Message ยังเปรียบเสมือนลำดับเหตุการณ์ที่เกิดขึ้นตลอดช่วงระยะเวลาในการพัฒนา สามารถบอกได้ว่าช่วงไหน ใครทำอะไรบ้าง
คำถามสำคัญคือ แล้วเราจะเขียน Commit message อย่างไรถึงจะถือว่าดีละ? Commit Message ที่ดีควรที่จะต้องตอบคำถามสามข้อนี้ให้ได้.
- ทำไมต้อง Commit? ?
- Commit แต่ละครั้งแก้ปัญหาอะไรไปบ้าง?
- การ Commit มีผลกระทบอะไรบ้าง?
หาก Commit Message ของเราไม่สามารถตอบคำถามเหล่านี้ได้ นั้นแสดงว่า Commit Message ของเรามีแนวโน้มที่จะไม่มีประโยชน์ต่อทีมงาน
Commit message ไม่มีกฎหรือรูปแบบที่ตายตัว แต่โดยพื้นฐานแล้วควรต้องมี logical change อย่างน้อย 1 อย่าง เช่น เพิ่ม Feature ใหม่ หรือแก้บักอะไร และหากสิ่งที่เราทำลงไปไม่สามารถอธิบายได้ด้วยข้อความสั้น ๆ ได้นั่นแสดงว่า Commit นั้นใหญ่หรือซับซ้อนเกินไป ควรแยก Commit ออกเป็นส่วน ๆ
สำหรับรูปแบบของ Commit Message ทีมต้องเป็นผู้กำหนดขึ้นมาเอง เพราะไม่มีรูปแบบที่ตายตัว Pattern ที่กำหนดขึ้นมาควรประกอบด้วยส่วนสำคัญสามส่วนดังต่อไปนี้
- Style : markup syntax, wrap margins, grammar, capitalization, punctuation.
- Content : Commit Message Body ควรประกอบด้วยข้อมูลอะไรบ้าง
- Metadata : วิธีการอ้างอิงถึง issue ids, pull request number ต่าง ๆ
กฎ 7 ข้อสำหรับ Commit message ที่ดี
- แยกหัวข้อกับเนื้อหาออกจากกันด้วยบรรทัดเปล่า
- หัวข้อต้องประกอบด้วยตัวอักษรไม่เกิน 50 ตัวอักษร
- ตัวอักษรตัวแรกของประโยคต้องขึ้นต้นด้วยตัวใหญ่เสมอ
- หัวข้อต้องไม่จบด้วยประโยคปิด คือลงท้ายด้วยจุด (.)
- หัวข้อต้องบอกถึงความจำเป็นที่จะต้องเปลี่ยนแปลงแก้ไข
- เนื้อหาไม่ควรเกิน 72 ตัวอักษร
- เนื้อหาต้องอธิบายถึงสิ่งเหล่านี้ เพราะอะไร และทำไมหรืออย่างไร(What and Why vs How)
หาก Pattern ที่กำหนดประกอบไปด้วยกฎพี้นฐานที่กล่าวมาข้างต้น หมายความว่าช่องทางการสื่อสารช่องนี้ของทีมมีประสิทธิภาพในระดับหนึ่ง แต่จะให้บอกว่าดีที่สุดหรือไม่ มีเพียงทีมเท่านั้นที่จะสามารถตอบได้
แหล่งอ้างอิง