วิธีใช้ฟังก์ชันคอมเมนต์และรีวิวบน GitHub (คู่มือ Code Review สำหรับผู้เริ่มต้น)
ในบทความที่แล้ว เราได้เรียนรู้การใช้ `Fork` และ `Pull Request` เพื่อก้าวแรกในการมีส่วนร่วมในโปรเจกต์ของผู้อื่น แต่การส่ง Pull Request เป็นเพียงจุดเริ่มต้นเท่านั้น การพัฒนาที่แท้จริงยังไม่เสร็จสิ้น จากนี้ไปคือจุดเริ่มต้นของโค้ดรีวิว (Code Review) ซึ่งเป็นหัวใจสำคัญของการพัฒนาแบบทีม
โค้ดรีวิวคือกระบวนการที่นักพัฒนาคนอื่น ๆ จะเข้ามาตรวจสอบโค้ดที่คุณเขียนและให้ข้อเสนอแนะ ซึ่งจะช่วยให้ค้นพบข้อบกพร่องได้เร็วขึ้น เรียนรู้วิธีการเขียนโค้ดที่ดีขึ้น และยกระดับคุณภาพของโค้ดโดยรวมของทีม ในบทความนี้ เราจะมาอธิบายอย่างละเอียดเกี่ยวกับวิธีใช้ฟังก์ชันคอมเมนต์และรีวิวบน GitHub เพื่อการสื่อสารที่มีประสิทธิภาพและทำการโค้ดรีวิวอย่างมีประสิทธิผล
พื้นฐานของโค้ดรีวิว: การสื่อสารบน Pull Request
ศูนย์กลางของการทำโค้ดรีวิวคือหน้า Pull Request ที่คุณสร้างขึ้น หน้านี้จะรวบรวมข้อมูลทั้งหมดที่เกี่ยวกับการเปลี่ยนแปลงของคุณ และการสื่อสารที่นี่จะส่งผลต่อคุณภาพของโปรเจกต์โดยตรง
ฟังก์ชันรีวิวของ GitHub แบ่งออกเป็น 2 ประเภทใหญ่ ๆ คือ
- คอมเมนต์ (Comment): ฟังก์ชันสำหรับโพสต์คำถามหรือความคิดเห็นอย่างไม่เป็นทางการ เกี่ยวกับบรรทัดโค้ดที่เฉพาะเจาะจงหรือ Pull Request ทั้งหมด
- รีวิว (Review): ฟังก์ชันสำหรับประเมินการเปลี่ยนแปลงทั้งหมดอย่างเป็นทางการ และแสดงเจตนาว่า "อนุมัติ (Approve)", "แสดงความคิดเห็นเท่านั้น (Comment)" หรือ "ร้องขอการเปลี่ยนแปลง (Request changes)"
การใช้ทั้งสองอย่างนี้อย่างเหมาะสมจะช่วยให้การสื่อสารเป็นไปอย่างราบรื่น
วิธีใช้ฟังก์ชันคอมเมนต์อย่างละเอียด
เรามาเริ่มจากฟังก์ชันคอมเมนต์ที่ใช้งานง่ายกันก่อน
1. คอมเมนต์สำหรับ Pull Request ทั้งหมด
หากคุณมีคำถามทั่วไปเกี่ยวกับการเปลี่ยนแปลงทั้งหมด หรือต้องการกล่าวขอบคุณ คุณสามารถใช้ช่องคอมเมนต์ที่ด้านล่างของหน้า Pull Request ได้ ซึ่งจะอยู่ในแท็บ "Conversation" ด้านล่างสุด
[ภาพ: ภาพหน้าจอของช่องป้อนความคิดเห็นที่ด้านล่างของหน้า Pull Request]
เพียงแค่ป้อนข้อความลงในกล่องข้อความแล้วกดปุ่ม "Comment" ก็สามารถโพสต์ได้ คุณยังสามารถใช้ `@ชื่อผู้ใช้` เพื่อส่งการแจ้งเตือน (mention) ไปยังบุคคลที่ต้องการได้อีกด้วย
2. คอมเมนต์สำหรับบรรทัดโค้ดที่เฉพาะเจาะจง
ฟังก์ชันที่ใช้บ่อยที่สุดในการทำโค้ดรีวิวคือการคอมเมนต์รายบรรทัด เหมาะอย่างยิ่งสำหรับการชี้แจงประเด็นที่เฉพาะเจาะจง เช่น "ชื่อตัวแปรตรงนี้น่าจะตั้งให้เข้าใจง่ายกว่านี้ไหม?"
- ในหน้า Pull Request ให้คลิกที่แท็บ "Files changed"
- รายการไฟล์ที่มีการเปลี่ยนแปลงจะปรากฏขึ้น ให้เลื่อนเมาส์ไปที่ด้านซ้ายของบรรทัดโค้ดที่ต้องการคอมเมนต์
- ไอคอน "+" สีฟ้าจะปรากฏขึ้น ให้คลิกที่ไอคอนนั้น
- กล่องข้อความจะปรากฏขึ้น ให้ป้อนความคิดเห็นของคุณแล้วกดปุ่ม "Start a review"
[ภาพ: การเพิ่มคอมเมนต์ในบรรทัดที่ต้องการในแท็บ "Files changed"]
ณ จุดนี้ คอมเมนต์ของคุณจะยังอยู่ในสถานะ "รอการตรวจสอบ (Pending)" เป็นเรื่องปกติที่จะรวบรวมข้อเสนอแนะหลาย ๆ ข้อก่อน แล้วจึงส่งเป็นรีวิวในครั้งสุดท้าย
3. ฟังก์ชันเสนอแนะการเปลี่ยนแปลง (Suggestion)
หากคุณต้องการเสนอโค้ดที่แก้ไขแล้วอย่างเป็นรูปธรรมว่า "เขียนแบบนี้น่าจะดีกว่า" ให้คลิกที่ไอคอน "Insert a suggestion" (เครื่องหมาย `+/-`) ที่อยู่เหนือช่องคอมเมนต์ จากนั้นโค้ดบล็อกจะถูกแทรกเข้ามา ทำให้คุณสามารถเขียนโค้ดแก้ไขของคุณได้โดยตรง
[ภาพ: การใช้ฟังก์ชัน "Insert a suggestion" เพื่อเสนอโค้ดแก้ไขในช่องคอมเมนต์]
การใช้ฟังก์ชันนี้จะสะดวกมาก เพราะผู้สร้าง Pull Request สามารถนำข้อเสนอแนะของคุณไปใช้กับโค้ดได้ด้วยการคลิกเพียงปุ่มเดียว
การส่งรีวิว: อนุมัติ หรือ ร้องขอการเปลี่ยนแปลง
หลังจากเขียนคอมเมนต์หลาย ๆ ข้อแล้ว สุดท้ายให้นำคอมเมนต์เหล่านั้นมารวมกันแล้วส่งเป็น "รีวิว" หนึ่งฉบับ ให้คลิกที่ปุ่ม "Review changes" ที่แสดงอยู่มุมบนขวาของหน้าจอ
[ภาพ: การชี้ไปที่ปุ่ม "Review changes"]
จากนั้นจะมี 3 ตัวเลือกปรากฏขึ้นมา
- Comment: เลือกเมื่อไม่ต้องการอนุมัติหรือร้องขอการเปลี่ยนแปลง แค่แสดงความคิดเห็นเป็นฟีดแบ็กเฉยๆ ใช้สำหรับ "คำถามเล็กน้อย" หรือ "ความเห็นส่วนตัว"
- Approve: เป็นการแสดงความเห็นชอบว่า "เนื้อหาการเปลี่ยนแปลงนี้ยอดเยี่ยม! ไม่มีปัญหา สามารถ merge ได้เลย"
- Request changes: เป็นการแสดงความต้องการให้แก้ไขว่า "การเปลี่ยนแปลงนี้จำเป็นต้องแก้ไข กรุณาแก้ไขตามที่ชี้แจงก่อนที่จะ merge"
[ภาพ: หน้าต่าง modal ที่แสดง 3 ตัวเลือกในการส่งรีวิว (Comment, Approve, Request changes)]
เลือกตัวเลือกที่เหมาะสม หากจำเป็นให้เขียนสรุปความคิดเห็นโดยรวมแล้วกดปุ่ม "Submit review" เพียงเท่านี้รีวิวของคุณก็จะถูกส่งอย่างเป็นทางการ และผู้สร้าง Pull Request จะได้รับการแจ้งเตือน
การตอบกลับรีวิว: แก้ไขตามคำแนะนำแล้ว Push อีกครั้ง
ในทางกลับกัน เรามาดูวิธีตอบกลับเมื่อคุณเป็นผู้สร้าง Pull Request และได้รับรีวิวจากผู้อื่นกันบ้าง
ขั้นตอนที่ 1: ตรวจสอบเนื้อหาคอมเมนต์และพูดคุย
สำหรับเนื้อหาที่ถูกชี้แนะ ก่อนอื่นควรกล่าวขอบคุณ หากมีจุดไหนที่ไม่เข้าใจ ให้ตอบกลับเพื่อสอบถาม การสื่อสารทั้งหมดจะถูกบันทึกไว้บน Pull Request
ขั้นตอนที่ 2: แก้ไขโค้ดตามคำแนะนำ
หากคุณเห็นด้วยกับคำแนะนำจากผู้รีวิว ให้แก้ไขโค้ดบน PC ของคุณ การสร้าง branch ใหม่เช่น `fix-review-comments` เพื่อทำงานจะยิ่งดูเป็นมืออาชีพมากขึ้น
ขั้นตอนที่ 3: Push คอมมิตเพิ่มเติม
เมื่อแก้ไขเสร็จแล้ว ให้สร้างคอมมิตใหม่แล้ว push ไปยัง branch ที่เป็นต้นทางของ Pull Request (เช่น `fix-typo-in-readme`)
git commit -m "Reflect review comments"
git push origin fix-typo-in-readme
เมื่อคุณ push คอมมิตใหม่ การเปลี่ยนแปลงนั้นจะถูกสะท้อนไปยัง Pull Request โดยอัตโนมัติ ไม่จำเป็นต้องสร้าง Pull Request ใหม่
ขั้นตอนที่ 4: แก้ไขการสนทนาที่เสร็จสิ้นแล้ว
เมื่อจัดการกับข้อเสนอแนะทั้งหมดเสร็จแล้ว ให้กดปุ่ม "Resolve conversation" ที่อยู่ใต้แต่ละคอมเมนต์เพื่อเปลี่ยนสถานะการสนทนาเป็นแก้ไขแล้ว ซึ่งจะทำให้เห็นได้ชัดเจนว่าข้อเสนอแนะใดได้รับการจัดการแล้วบ้าง
[ภาพ: ปุ่ม "Resolve conversation" ถูกกด และการสนทนาถูกพับเก็บ]
เมื่อทุกการสนทนาถูกแก้ไขและได้รับการ "Approve" จากผู้รีวิวอีกครั้ง ก็ถึงเวลาที่จะทำการ merge แล้ว