ถ้าเราเป็นเจ้าของโปรเจค เวลามีคนเปิด issue หรือส่ง merge request มา เราอยากให้เขาเขียนรายละเอียดอะไรใส่ลงไปบ้างนะ ?
สำหรับผม เวลามีคนมารีพอร์ตบัค ผมเองก็อยากรู้ว่าบัคที่เขาเจอมีอาการยังไง, ผลลัพธ์ที่ควรจะได้เป็นแบบไหน, สเต็ปในการเล่นต้องทำยังไงบ้างถึงจะเจอบัค, เจอบัคที่เวอร์ชันไหน ใช้อุปกรณ์อะไร ฯลฯ
ถ้าเป็น merge request ก็คงอยากได้รายละเอียดว่าโค้ดที่เขียนมามันทำอะไร, จะทดสอบหรือเล่นมันยังไงได้บ้าง
แล้วเราจะบอกเล่าความต้องการนี้ยังไงดีนะ ?
ใช้เทมเพลตสิ
ในฐานะเจ้าของโปรเจคเราสามารถ สร้างเทมเพลตของ merge request และ issue ใส่ไว้ในโปรเจคได้ด้วยนะ เวลามีคนมาเปิด issue หรือ merge request ก็จะมีตัวเลือกให้ว่าจะใช้เทมเพลตไหนครับ ผมขอยกตัวอย่างเป็น GitLab แล้วกัน
วิธีการก็คือเราจะสร้างไฟล์ markdown ไว้ในโปรเจคของเรา ที่ .gitlab/issue_templates
และ .gitlab/merge_request_templates
สำหรับ issue และ merge request ตามลำดับ
สมมติว่าผมสร้างไฟล์เทมเพลตสำหรับแจ้งบัคไว้ที่ .gitlab/issue_templates/bug.md
โดยมีหัวข้อที่ผมอยากรู้ ดังนี้
## Expected Behavior
## Actual Behavior
## Steps to Reproduce the Problem
1.
2.
3.
## Specifications
- Version:
- Platform:
- Subsystem:
คราวหน้าเวลามีคนมาเปิด issue ก็จะมีตัวเลือกให้เราเลือกเทมเพลตที่มีในโปรเจคได้ ซึ่งมันก็จะเอา markdown ในเทมเพลตไปวางนี่แหละ เราก็เข้าไปใส่รายละเอียดในแต่ละหัวข้อได้เลย
ภายในโฟลเดอร์ เราสามารถใส่เทมเพลตอื่นๆได้อีกนะครับ ตัวอย่างเช่น bug, question, enhancement เพราะในแต่ละเทมเพลตก็อาจจะต้องการเนื้อหาที่ไม่เหมือนกัน
สรุป
การมีรายละเอียดใน issue และ merge request ผมว่าเป็นเรื่องดีอยู่แล้ว ซึ่งการมีเทมเพลตก็จะช่วยให้ใส่รายละเอียดได้ตรงตามที่เจ้าของโปรเจคอยากได้ คนสร้าง issue ก็ไม่ต้องจำและไม่ต้องเดาเอาเองว่าจะต้องเขียนอะไรบ้าง
สำหรับใครที่อยากได้เทมเพลตก็ใช้ตาม repository นี้ได้นะครับ มีให้เลือกหลายแบบเลย
https://github.com/stevemao/github-issue-templates