ประโยชน์ของ Commit Message

Commit Message ที่ดีช่วยให้การทำงานเป็นทีมมีประสิทธิภาพดียิ่งขึ้น

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

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

ในโลกของการพัฒนา Software สิ่งหนึ่งที่จะขาดไม่ได้ก็คือ Source Control ที่ช่วยให้การทำงานเป็นทีมเป็นไปอย่างมีประสิทธิภาพ และก็เป็นอีกหนึ่งช่องทางการสื่อสารที่หลายทีมมองข้ามและไม่ให้ความสำคัญ นอกจาก Source Code ของ Software แล้ว สิ่งหนึ่งที่สำคัญไม่แพ้กันคือ Commit Message ที่เราเขียนทุกครั้งที่เราทำงานเสร็จ

ตัวอย่าง commit message ที่ไม่มีประสิทธิภาพ

ทำไม Commit message ถึงสำคัญ??

ความเปลี่ยนแปลงที่เกิดขึ้นกับ Source Code ในการ Commit แต่ละครั้ง บอกได้เพียงว่า "อะไร" ที่เปลี่ยนแปลงไป แต่สิ่งที่จะบอกถึงเหตุผลว่า "ทำไม" ถึงต้องเปลี่ยนก็คือ Commit Message ดังนั้นหากเรามองข้ามในส่วนนี้ก็เปรียบเสมือนเราบอกแค่ว่าเราทำอะไรไป แต่ไม่ได้บอกเหตุผล ว่าทำไม เมื่อปราศจากเหตุผล สมาชิกในทีมทำได้เพียง "รับรู้" แต่ "ไม่เข้าใจ" และเมื่อไม่เข้าใจ ย่อมไม่อาจแก้ไขให้ถูกต้องได้หากมีข้อผิดพลาด

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

คำถามสำคัญคือ แล้วเราจะเขียน Commit message อย่างไรถึงจะถือว่าดีละ? Commit Message ที่ดีควรที่จะต้องตอบคำถามสามข้อนี้ให้ได้.

  1. ทำไมต้อง Commit? ?
  2. Commit แต่ละครั้งแก้ปัญหาอะไรไปบ้าง?
  3. การ Commit มีผลกระทบอะไรบ้าง?

หาก Commit Message ของเราไม่สามารถตอบคำถามเหล่านี้ได้ นั้นแสดงว่า Commit Message ของเรามีแนวโน้มที่จะไม่มีประโยชน์ต่อทีมงาน

Commit message ไม่มีกฎหรือรูปแบบที่ตายตัว แต่โดยพื้นฐานแล้วควรต้องมี logical change อย่างน้อย 1 อย่าง เช่น เพิ่ม Feature ใหม่ หรือแก้บักอะไร และหากสิ่งที่เราทำลงไปไม่สามารถอธิบายได้ด้วยข้อความสั้น ๆ ได้นั่นแสดงว่า Commit นั้นใหญ่หรือซับซ้อนเกินไป ควรแยก Commit ออกเป็นส่วน ๆ

สำหรับรูปแบบของ Commit Message ทีมต้องเป็นผู้กำหนดขึ้นมาเอง เพราะไม่มีรูปแบบที่ตายตัว Pattern ที่กำหนดขึ้นมาควรประกอบด้วยส่วนสำคัญสามส่วนดังต่อไปนี้

  1. Style : markup syntax, wrap margins, grammar, capitalization, punctuation.
  2. Content : Commit Message Body ควรประกอบด้วยข้อมูลอะไรบ้าง
  3. Metadata : วิธีการอ้างอิงถึง issue ids, pull request number ต่าง ๆ

กฎ 7 ข้อสำหรับ Commit message ที่ดี

  1. แยกหัวข้อกับเนื้อหาออกจากกันด้วยบรรทัดเปล่า
  2. หัวข้อต้องประกอบด้วยตัวอักษรไม่เกิน 50 ตัวอักษร
  3. ตัวอักษรตัวแรกของประโยคต้องขึ้นต้นด้วยตัวใหญ่เสมอ
  4. หัวข้อต้องไม่จบด้วยประโยคปิด คือลงท้ายด้วยจุด (.)
  5. หัวข้อต้องบอกถึงความจำเป็นที่จะต้องเปลี่ยนแปลงแก้ไข
  6. เนื้อหาไม่ควรเกิน 72 ตัวอักษร
  7. เนื้อหาต้องอธิบายถึงสิ่งเหล่านี้ เพราะอะไร และทำไมหรืออย่างไร(What and Why vs How)

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

แหล่งอ้างอิง
  1. How to Write a Git Commit message.
  2. Who-T
  3. Pro Git book
  4. Spring Boot on GitHub