Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

บันทึกจาก paper เรื่อง Refactoring vs Refuctoring: Advancing the state of AI-automated code improvements

$
0
0

นั่งอ่าน paper เรื่อง Refactoring vs Refuctoring
กับการนำ LLM (Large Language Model) เข้ามาใช้ว่าเป็นอย่างไร ?
ในการ generate code และ การปรับปรุงโครงสร้างของ code (Refactoring)
ซึ่งใน paper นี้จะช่วยแสดงให้เห็นว่าการทำงานเป็นอย่างไร
มีข้อจำกัดอะไรบ้าง
ผลที่ได้มีความน่าเชื่อถืออย่างไร
มีความผิดพลาดอย่างไรบ้าง
มาดูกัน

จากการทดลองในงานจริง ๆ ใน paper นั้นบอกไว้ว่า

  • หลังจากที่ให้ AI ทำการ refactor code แล้วนั้น มีเพียง 37% ที่ทำให้ code ไม่พัง หรือ ทำงานได้เช่นเดิม
  • เมื่อ refactoring ผ่านแล้วพบว่า code ถูกปรับปรุงจริง ๆ มีความน่าเชื่อถือสูง ทั้งจากคนและเครื่องมือ ซึ่งช่วยลดงานลงไปได้เยอะมาก ๆ และลด technical debt ลงไป

โดย metric ที่ใช้ในการวัดคุณภาพของ code ที่ generate ออกมา
ใช้งาน Code Health Metric ของ CodeSense

ส่วน LLM ที่ใช้ประกอบไปด้วย

ปล. ส่วน GPT-4o ยังไม่ได้ทดสอบในตอนนั้น

แน่นอนว่าในการทำงานของ LLM นั้นไม่ได้สร้างมาเพื่อความถูกต้อง
แต่มันคือการคาดเดา หรือ ความน่าจะเป็น จากข้อมูลและความรู้ที่มีอยู่
จากการทดลองพบรูปแบบที่ผิด ๆ เหมือนกันดังนี้

  • ไม่สนใจพวก branch condition ต่าง ๆ หรือ if-else ซึ่งทำให้เกิด bug ขึ้นได้ เช่นการ validate input เป็นต้น
  • Invert boolean condition
  • การ refactoring code ด้วยการแยกเงื่อนไขที่ซับซ้อนใน function ไปยัง function ย่อย ๆ ก่อให้เกิด bug ได้เช่น

ดังนั้นก็ต้องระมัดระวังอย่างมาก ๆ
เรื่องของผู้ช่วยนั้นดี แต่ความไว้ใจนั่นอาจจะไม่ ต้องตรวจสอบอยู่เสมอ
เครื่องมือดี แต่ต้องระมัดระวัง

อีกอย่างคือ ขั้นตอนในการตรวจสอบคุณภาพของ code ที่ refactor มานั้น

จะมีขั้นตอนดังนี้

เป็นอีกหนึ่ง paper ที่น่าสนใจ
แต่ออกมาตั้งแต่ต้นปีแล้ว หลาย ๆ อย่างปรับเปลี่ยนไปเยอะมาก ๆ
แต่ก็ยังสามารถนำมาเป็นแนวทางได้เช่นกัน

Reference เรื่อง Refuctoring


Viewing all articles
Browse latest Browse all 1997

Trending Articles