เมื่อเช้ามีการพาทีมทำ code review เลยจดบันทึกไว้สักหน่อย
กำหนดเป้าหมาย
ก่อนที่เราจะเริ่มต้น review code เราต้องตอบคำถามให้ได้ก่อนว่า เป้าหมายของการ review code ของเรา คือ อะไร
เช่น สิ่งที่เราต้องการ คือ
- ต้องการคุม Standard และ Quality ในการการเขียน source code
- ทำให้ source code อ่านได้ง่าย มีความสม่ำเสมอ
- ทำให้ source code ง่ายต่อการเปลี่ยนแปลง
- การระบุข้อบกพร่องตั้งแต่เนิ่นๆ
- แชร์ความรู้กันภายในทีม
จัดกลุ่มและวางข้อกำหนด
เมื่อเรารู้แล้วว่าเป้าหมายในการทำ code review ของเราคืออะไรแล้ว ทั้งทีมก็มาลงรายละเอียดข้อตกลงในการทำงาน หรือข้อกำหนดอื่นๆ เพิ่มเข้าไป เพื่อให้ทีมรู้ว่าเราควรจะสนใจเรื่องไหนบ้าง
ถ้าเราต้องทำการ review code ของ front-end เราต้องมาจัดกลุ่มก่อนว่าเราจะโฟกัสเรื่องไหนบ้าง ตามภาพ
ผมจะแบ่งกลุ่มออกเป็น 3 เรื่องใหญ่ๆ คือ
- Practise & Programming Language
- Framework & Library
- Process & Tools
Practise & Programming Language
เป็นการ review ในเรื่องของการเขียน code ให้ตรงตามข้อตกลงของทีมและตรงตามที่ตัวภาษากำหนด โดยจะแบ่งของเป็นกลุ่มย่อยๆ ได้อีก เช่น
- General ข้อกำหนดทั่วไปของทีมในการเขียน code
- Code Style ข้อกำหนดวิธีการเขียน code ของทีม ว่าจะเป็นในรูปแบบไหน
- Programming Language รูปแบบการเขียนที่ตัวภาษาเป็นคนกำหนด
ตัวอย่าง
General
Codestyle
Programming Language (ES14)
เมื่อเราพูดถึง practise หรือที่ผมชอบเรียกว่า "ข้อตกลงในการทำงาน" นั้น มันสามารถแยกออกเป็น 2 ส่วน คือ practices ของตัวภาษาหรือ framework กับ practices ของทีม ซึ่งมันจะล้อตามกันอยู่แล้ว และอาจจะมีการกำหนดบางอย่างเพิ่มเข้าไปด้วย
Framework & Library
เป็นการ review ในเรื่องของวิธีการเขียน code ให้ตรงตามข้อตกลงของทีมและตรงตามที่ตัว framework เป็นคนกำหนด
เช่น
React
ESLint
Process & Tools
เป็นการกำหนดวิธีการทำงาน และการใช้งานเครื่องมือต่างๆ ในการพัฒนา กลุ่มนี้เราจะสนใจไปที่กระบวนการทำงานและการใช้งานเครื่องมือ อย่างถูกต้องและเป็นไปตามที่ตกลงกันไว้
เช่น
Git
Others
การ Review Code
หลังจากที่ทีมได้กำหนดข้อตกลงในการทำงานทั้งหมดแล้ว เมื่อถึงเวลาที่ต้อง review เราก็จะ ยึดตามข้อตกลงเหล่านั้น
Automation Tools
โดยทั่วไปแล้ว ควรจะเริ่มจากอะไรที่สามารถทำได้เอง ทำได้เร็ว และใช้เวลาน้อย โดยเราอาจจะหาเครื่องมือเข้ามาช่วยได้ เช่น
Coding Standard เราอาจหยิบเอา Linter เข้ามาช่วยในการ scan หาจุดที่ไม่ตรงตามที่ทีมได้กำหนดไว้ หรืออย่าง unit test เราก็เพิ่มการเช็ค code coverage เข้าไปด้วยเป็นต้น
บางอย่างถ้ามันใช้เวลาในการ review นานเกินไป อาจจะทำทีหลังได้ แต่หลักๆ พวก Linter กับ Test coverage สามารถทำได้เลย
Team Reviews
เมื่อผ่านการ review ด้วยตัวเองแล้ว ค่อยมาลงรายละเอียดในส่วนต่างๆ อีกทีนึง ซึ่งเราก็ไล่ไปเลย ทีมละกลุ่ม
หากมีส่วนไหนที่ไม่ตรงตามข้อตกลงหรือ practices ที่ตกลงกันไว้ ก็ปรับแก้กันได้เลย จะได้ไม่ลืมแก้ และต้องมารีวิวเรื่องเดิมซ้ำอีกรอบหนึ่ง
ความถี่ในการ Review
เมื่อมีการเขียน code เสร็จแล้ว หรือแนะนำว่าถ้าเป็นไปได้ก็ให้มีการ review ในทุกๆ เย็นเลย เพราะ ส่วนที่ review จะไม่มากนัก หากต้องปรับแก้ก็ปรับแก้แค่เล็กๆ น้อยๆ
ถ้าหากทีมยังไม่เคยทำ review เลย หรือเริ่มทำ review หลังจากที่ทำงานมาระยะหนึ่งแล้ว ช่วงแรกมันจะเยอะและใช้เวลานาน
เพราะฉนั่นให้เริ่ม review code ตั้งแต่วันแรกที่เริ่มเขียน code เลย