การทำ Code Review ช่วยเราได้อย่างไร ?
![การทำ Code Review ช่วยเราได้อย่างไร ?](/_next/image?url=https%3A%2F%2Fsennalabs.s3.ap-southeast-1.amazonaws.com%2Fblogs%2F%25C3%25A0%25C2%25B8%25C2%2581%25C3%25A0%25C2%25B8%25C2%25B2%25C3%25A0%25C2%25B8%25C2%25A3%25C3%25A0%25C2%25B8%25C2%2597%25C3%25A0%25C2%25B8%25C2%25B3CodeReview%25C3%25A0%25C2%25B8%25C2%258A%25C3%25A0%25C2%25B9%25C2%2588%25C3%25A0%25C2%25B8%25C2%25A7%25C3%25A0%25C2%25B8%25C2%25A2%25C3%25A0%25C2%25B9%25C2%2580%25C3%25A0%25C2%25B8%25C2%25A3%25C3%25A0%25C2%25B8%25C2%25B2%25C3%25A0%25C2%25B9%25C2%2584%25C3%25A0%25C2%25B8%25C2%2594%25C3%25A0%25C2%25B9%25C2%2589%25C3%25A0%25C2%25B8%25C2%25AD%25C3%25A0%25C2%25B8%25C2%25A2%25C3%25A0%25C2%25B9%25C2%2588%25C3%25A0%25C2%25B8%25C2%25B2%25C3%25A0%25C2%25B8%25C2%2587%25C3%25A0%25C2%25B9%25C2%2584%25C3%25A0%25C2%25B8%25C2%25A3byNat_1703493453260.png&w=3840&q=75)
Code Review คือการทำอะไร ?
การทำ Code Review เป็นกระบวนการหนึ่งในการพัฒนาซอฟต์แวร์ โดยจะเป็นการนำโค้ดมาตรวจดูว่ามีส่วนไหนไม่ถูกต้องหรือไม่ตรงตาม Requirement หรือไม่ รวมถึงโค้ดถูกต้องตามมาตรฐาน Computer Language หรือไม่ และรวมถึงการเสนอแนวทางการปรับปรุงให้ดีขึ้นกว่าเดิม
โดยในการพัฒนาซอฟต์แวร์แต่ละครั้งนั้นจะต้องนำโค้ดมารวมเข้ากับโค้ดของคนอื่น ๆในโปรเจกต์ ก็จะต้องผ่านการทำ Code Review ก่อนเสมอ หากมีการให้แก้ไขก็ต้องทำการแก้ไขให้เสร็จก่อนจึงจะนำโค้ดที่ได้มารวมกัน
ใครบ้างที่สามารถทำ Code Review ?
Credit: Group of people using laptop
คำตอบนั้นคือทุกคนในทีมที่มีส่วนร่วมในการเขียนโค้ดควรจะทำเพราะทุกคนในทีมล้วนเป็นเจ้าของโค้ด (Ownership) โดยปกติจะมีเงื่อนไขว่า Pull Request นั้นจะต้องได้รับการ Approve จาก Developer ในทีม ผู้เชี่ยวชาญที่เกี่ยวข้องหรือ Senior Developer อย่างน้อย 1 คนขึ้นไป จึงจะสามารถนำโค้ดไป Merge รวมกัน นอกจากสมาชิกภายในทีมที่ต้อง Review Code แล้ว คนที่ควรจะทำการ Review เป็นคนแรกนั้นก็คือผู้เขียนโค้ดนั้นเอง เพราะในบางครั้งหรือด้วยความรีบมักจะมีหลุดทำการ Comment โค้ด พิมพ์ผิด หรือลืมเติม s หรือ es หรืออาจจะเป็นใส่ print หรือ console.log() ไว้ โดยหากลองตรวจด้วยตัวเองอีกครั้งก็จะทำให้โค้ดของเรามีคุณภาพมากยิ่งขึ้น และลดเวลาในการ Review Code ได้อีกด้วย
ข้อดีและข้อเสียของการทำ Code Review
ข้อดีของการทำ Code Review
-
Share Ownership หรือก็คือโค้ดเหล่านั้นเป็นของทุกคน ไม่ใช่เป็นของใครคนใดคนหนึ่ง
-
Review Requirement เป็นการทบทวนถึงโค้ดที่เขียนมานั้นตรงตาม Requirement ไหม หรือทบทวนว่าทำถึงไหนแล้ว และยังเป็นการทบทวนตนเองด้วยว่าสิ่งที่ทีมทำมานั้นเราเข้าใจ Requirement ตรงกันหรือไม่
-
Share Knowledge เป็นการแชร์ความรู้กัน โดยเมื่อมีการพัฒนาโค้ดแต่ละครั้ง ภายในทีมก็จะสามารถเรียนรู้เทคนิค หรือวิธีการแก้ไขปัญหาจากโค้ดที่เกิดจากการพัฒนา
-
Improve Code Quality การทำ Code Review นั้นจะเป็นวิธีที่จะช่วยทำให้โค้ดนั้นมีประสิทธิภาพ และมีคุณภาพตามมาตรฐานที่กำหนดไว้
-
Improve Learning การทำ Code Review เป็นสิ่งที่ได้ทั้ง 2 ฝ่ายเลย ทั้งคนเขียนและคนรีวิว คนเขียนได้แก้ไขปรับปรุงให้โค้ดอ่านง่าย เป็นมาตรฐาน และง่ายต่อการทำความเข้าใจ คนรีวิวได้ฝึกฝนการตรวจ การแก้ปัญหา และการให้คำแนะนำ
ข้อเสียของการทำ Code Review
-
Fear of Review มักเป็นข้อเสียที่เกิดขึ้นได้ทุกที่ ยิ่งเป็นคนที่มาร่วมทีมใหม่ ๆ หรือประสบการณ์ยังน้อย มักจะไม่ค่อยกล้าที่จะ Review ซึ่งมักจะเกิดได้จากหลายสาเหตุ ได้แก่
-
ประสบการณ์หรือความชำนาญยังไม่มากพอก็อาจจะทำให้ไม่กล้าที่จะเข้าไปรีวิว
-
กลัวเมื่อรีวิวไปแล้วอาจจะโดนตำหนิ
-
Long time to ship โดยการ Review Code ในแต่ละครั้งนั้นก็อาจจะใช้เวลาในการตรวจดูต่างกัน ซึ่งก็ขึ้นอยู่กับขนาดของ Pull Request ความยากของโค้ด หรือแม้กระทั้งความละเอียดในการตรวจ ซึ่งในบางครั้งอาจจะต้อง Pull Code ของ Pull Request มาใช้งานที่เครื่องตัวเองเพื่อดูว่าทำงานตรงตามสเปคหรือไม่
-
Large reviews mean longer review times การมีคนมารีวิวโค้ดเยอะ ๆ นั้นก็อาจจะไม่ได้ดีไปซะทั้งหมด เนื่องจากการที่มีผู้มารีวิวเยอะก็จะทำให้ใช้เวลาในการพูดคุยหรือโต้แย้งนานขึ้น ยิ่งเป็น Pull Request ที่มีขนาดใหญ่แล้วด้วยก็อาจจะทำให้ใช้เวลามากขึ้นไปอีก
แล้วถ้าไม่เคยทำ Code Review เลยจะต้องเริ่มยังไงดี ?
ยกตัวอย่างเช่นใช้เครื่องมือในการเก็บโค้ดเป็น Github ปกติถ้าไม่ทำ Code Review ก็อาจจะแตก Branch แล้วทำการพัฒนาโค้ดเสร็จก็จะนำโค้ดที่จะทำการ Merge ไปยัง Master หรือ Main โดยก่อนจะทำการ Merge นั้นแหละ ให้ทีมมาตรวจโค้ดกัน หากทีมไม่มีข้อเสนอแนะก็จะทำการ Approve เราก็จะสามารถ Merge ได้เลย
Credit: https://flic.kr/p/gLKune
อีกแนวทางก็คือการทำ Pair Programming วิธีการนี้คือจะทำเป็นกันเป็นคู่ โดยสลับกันคือคนนึงจะเป็นคนเขียนโค้ดส่วนนึงอีกคนก็จะคอยรีวิวความถูกต้องหรือแนะนำแนวทาง
ข้อดีของวิธีนี้คือ
-
เป็นการแลกเปลี่ยนความรู้ซึ่งกันและกัน
-
แก้ปัญหาได้รวดเร็วเมื่อผู้ที่โค้ดอยู่ติดปัญหา
-
เหมาะกับการไกด์ให้แก่ผู้ที่ประการณ์น้อย
ข้อเสียก็มีเหมือนกัน เช่น
-
ใช้เวลาในการพัฒนานขึ้น
สิ่งที่ควรทำสำหรับ Code Review
Small Pull Request จะดีกว่ามั้ย ถ้าหากนำโค้ดที่มีความยาวไม่มาก อาจจะไม่เกิน 100-300 บรรทัด เพราะยิ่ง Pull Request นั้นมีขนาดเล็กได้ก็จะง่ายและเร็วขึ้นกับผู้ตรวจ
Team should be review การทำ Code Review นั้น ทีมก็ควรช่วยทำเพราะอย่างที่กล่าวไป ทีมเป็นผู้รู้ข้อมูล Requirement และโค้ดก็เป็นของทีม การทำแบบนี้ยังช่วยให้ทีมยังคงทำตามมาตรฐานที่วางไว้ และการที่ทีมสามารถรีวิวโค้ดได้นั้นจะทำให้ไม่มีคำว่าคนหลักในการตรวจโค้ด
Ask questions and provide helpful context เมื่อได้รีวิวโค้ด หากสงสัยก็สามารถตั้งคำถามได้ หรือหากมีส่วนไหนที่สามารถปรับปรุงได้ก็ควรจะแนะนำและอธิบายถึงเหตุผลในการปรับปรุงเพิ่ม
References:
![Nat](/_next/image?url=https%3A%2F%2Fsennalabs.s3.ap-southeast-1.amazonaws.com%2Fteams%2FBG_06-Nat_1679438654879.png&w=3840&q=75)
![](/_next/image?url=%2Fimages%2Fsubscribe.webp&w=3840&q=75)
Subscribe to follow product news, latest in technology, solutions, and updates
Other articles for you
Let’s build digital products that are simply awesome !
We will get back to you within 24 hours!Go to contact us![](/_next/image?url=%2Fimages%2Ftell-us-arrow.webp&w=384&q=75)
![Contact ball](/_next/image?url=%2Fimages%2Fcontact-ball.webp&w=3840&q=75)
![Contact us bg 2](/_next/image?url=%2Fimages%2Fcontact-us-bg-2.webp&w=3840&q=75)
![Contact us bg 4](/_next/image?url=%2Fimages%2Fcontact-us-bg-4.webp&w=3840&q=75)
![Contact us bg 1](/_next/image?url=%2Fimages%2Fcontact-us-bg-1.webp&w=3840&q=75)
![Ball left](/_next/image?url=%2Fimages%2Fball-left.png&w=1080&q=75)
![Ball right](/_next/image?url=%2Fimages%2Fball-right.png&w=1920&q=75)
![Ball left](/_next/image?url=%2Fimages%2Fball-left.png&w=256&q=75)
![Ball right](/_next/image?url=%2Fimages%2Fball-right.png&w=384&q=75)
![Sennalabs gray logo](/_next/image?url=%2Fimages%2Fsennalabs-gray-logo.webp&w=256&q=75)