
ถ้าใครดู LIVE: Uncle Bob on Software Fundamentals in the Age of AI กับคุณ Matt Pocock
จะมีสิ่งหนึ่งที่น่าสนใจคือ แนวทางในการตรวจสอบสิ่งที่ AI สร้างขึ้นมา
ยิ่งเป็น source code ด้วย ว่ามันมีคุณภาพ และ ทำงานได้ตามที่ต้องการหรือไม่ ?
แน่นอนว่า ถ้า code ไม่เยอะ คนเราน่าจะ review เองได้
แต่ชีวิตจริงมันเยอะมาก ๆ
ดังนั้น จำเป็นต้องมีเครื่องมือมาช่วยนั่นเอง
โดยหนึ่งในนั้นคือ การนำเอา CRAP score หรือ (Change Risk Anti-Patterns)
มาช่วยในการตรวจสอบ หรือ ประเมินความเสี่ยงของ code ให้
ดังนั้นเรามาดูว่า CRAP มันเป็นอย่างไร แล้ววัดอย่างไรกัน ?
ตามจริงยังมีเรื่องของ mutation testing อีกด้วย
ในการวัดผลนั้นจะใช้ค่า
- Cyclomatic complexity หรือความซับซ้อนของ code
- Code/Test coverage ว่าเป็นอย่างไร ดังนั้นต้องมีการเขียน test นั่นเอง
การวัดค่านั้นจะมีการคิดดังนี้
- Low Risk (< 5): The function is simple and well-tested by unit tests
- Moderate Risk (5–15): Acceptable quality for standard application code
- High Risk (15–30): The code is too complex or lacks proper tests
- Critical Risk (> 30): Dangerous technical debt that requires immediate refactoring
ทั้งสองอย่างใช้เพื่อตรวจสอบว่า code มันมีความซับซ้อน ยุ่งเหยิงอย่างไร
รวมทั้งมีการทำงานตามที่คาดหวังหรือไม่นั่นเอง
ทั้ง success case, failure case และ edge case เป็นต้น
ดังนั้นถ้า code มันซับซ้อนเกินไป ก็ต้อง refactor
เช่น แยกเป็น function/method ย่อย ๆ
หรือแยกเป็นไฟล์ใหม่ออกไป เป็นต้น
Code ส่วนไหนไม่มี test case ก็น่าจะก่อให้เกิดปัญหาได้
ตรงนี้ทำได้ทั้ง unit test, integration test และ component test กันเลย
หรือจนถึง end-to-end test เลยก็ได้
ขึ้นอยู่กับ feedback loop ของระบบงานด้วย
หรือ ตรวจสอบว่า test case มันไม่ครอบคลุมใน case ต่าง ๆ
รวมทั้ง test case ไม่ดี ก็ช่วยได้เช่นกัน
ช่วยให้ให้เรารักษาสมดุลระหว่าง คุณภาพของ code และ ความถูกต้องของการทำงาน
ยิ่งถ้าการ generate code มาจาก AI ซึ่งจะเยอะมาก ๆ
ยิ่งต้องการ feedback และ signal ที่มีความน่าเชื่อถือมาช่วยตรวจสอบ
ไม่ใช่แค่ตรวจสอบว่า มัน build ได้ และ run ได้ แน่นอนว่า มันยังไม่พอ !!

โดยที่ CRAP นั้นมีเครื่องมือให้ใช้งาน ในแต่ละภาษา program เลย
แน่นอนว่า มันคือ metric หรือ score หนึ่งเท่านั้น
เรายังสามารถใช้เครื่องมืออื่น ๆ มาเพิ่มเติมได้ เช่น
- Lint tool
- Static code analysis เช่น SonarQube CLI ที่สร้างมาเพื่อ AI Agent เลย ไม่ต้องรอให้ไป run ที่ CI/CD
ลองนำไปประยุกต์ใช้งานดูครับ
สามารถนำมาใช้งานในรูปแบบของ CLI
หรือจะใช้งานผ่าน Agent Skills
หรือจะนำไปใส่ใน Hooks ก็ได้เช่นกัน
หรือถ้าไม่ได้ใช้ AI เราก็นำแนวคิดและเครื่องมือเหล่านี้ไปใช้งานได้เช่นกัน