Fri Jun 26 2026 20:00:00 GMT-0400 (Eastern Daylight Time)

การปรับโครงสร้างโค้ดที่ได้รับความช่วยเหลือจาก AI โดยไม่ทำลายสิ่งต่าง ๆ

วิธีที่วิศวกรทำงานใช้ AI เพื่อปรับโครงสร้างโค้ดอย่างปลอดภัย: ตรวจจับกลิ่นโค้ด ปรับปรุงโมดูลเดิมให้ทันสมัย ​​รักษาการทดสอบสีเขียว และเลือกเครื่องมือที่เหมาะสม

การปรับโครงสร้างโค้ดที่ได้รับความช่วยเหลือจาก AI โดยไม่ทำลายสิ่งต่าง ๆ

อัปเดตล่าสุด: 27 มิถุนายน 2569

การปรับโครงสร้างใหม่หมายถึงช่วงบ่ายอันเงียบสงบ ชุดทดสอบสีเขียว และการเปลี่ยนชื่ออย่างระมัดระวัง AI เปลี่ยนแปลงความเร็วของงานนั้น ไม่ใช่ระเบียบวินัยที่อยู่เบื้องหลัง โมเดลสามารถเปลี่ยนชื่อสัญลักษณ์ในไฟล์สี่สิบไฟล์ได้ภายในไม่กี่วินาที แต่ยังสามารถลบสาขาที่จัดการกรณีการชำระเงินเมื่อสามปีที่แล้วได้อย่างมั่นใจ

นี่คือคำแนะนำของผู้ปฏิบัติงานเกี่ยวกับการใช้ AI ในการปรับโครงสร้างใหม่ในลักษณะที่วิศวกรที่ระมัดระวังจะทำ: ขั้นตอนเล็กๆ น้อยๆ การรักษาพฤติกรรมไว้ การทดสอบการปกป้องทุกการเคลื่อนไหว

ตัวแก้ไขโค้ดที่แสดงเมนูการทำงานของ AI พร้อมตัวเลือกการแนะนำการปรับโครงสร้างใหม่ อธิบายโค้ด และค้นหาปัญหา

คำตอบด่วน: คุณจะปรับโครงสร้างใหม่ด้วย AI โดยไม่ทำลายสิ่งต่าง ๆ ได้อย่างไร

ปฏิบัติต่อ AI ในฐานะวิศวกรรุ่นเยาว์ที่รวดเร็ว ผู้ไม่เคยเหนื่อยและไม่เคยอ่านตั๋ว คุณต้องรับผิดชอบต่อพฤติกรรม

ปักหมุดพฤติกรรมด้วยการทดสอบก่อน จากนั้นจึงขอการเปลี่ยนแปลงเล็กๆ น้อยๆ ทีละรายการ จากนั้นตรวจสอบความแตกต่างก่อนที่คุณจะยอมรับ การปรับโครงสร้างใหม่หมายถึงการเปลี่ยนแปลงโครงสร้างในขณะที่ยังคงรักษาพฤติกรรมที่สังเกตได้เหมือนเดิม ซึ่งเป็นคำจำกัดความที่ Martin Fowler ระบุไว้ใน แค็ตตาล็อกการปรับโครงสร้างใหม่ หากการเปลี่ยนแปลงเปลี่ยนแปลงพฤติกรรม ถือเป็นการเขียนใหม่หรือแก้ไขข้อบกพร่อง และจำเป็นต้องมีการตรวจสอบที่แตกต่างกัน

ขั้นตอนการทำงานที่ยึดถือตามกำหนดเวลาจริง:

  1. ล็อคพฤติกรรมปัจจุบันด้วยการทดสอบลักษณะเฉพาะ
  2. ให้เป้าหมายที่แคบและมีชื่อแก่ AI ("แยกการตรวจสอบนี้ออกเป็นฟังก์ชันล้วนๆ")
  3. อ่านความแตกต่างแบบเต็ม ไม่ใช่แค่บทสรุป
  4. รันชุดโปรแกรมและ linter ก่อนที่จะคอมมิต
  5. ยืนยันแต่ละขั้นตอนสีเขียวแยกกันเพื่อให้คุณสามารถแบ่งส่วนได้ในภายหลัง

เก็บการเปลี่ยนแปลงไว้รวมกัน การรีแฟกเตอร์ 40 บรรทัดที่ผ่านการตรวจสอบจะเหนือกว่า "การล้างข้อมูล" 2,000 บรรทัดที่ไม่มีผู้ตรวจสอบสามารถตรวจสอบได้

AI สามารถทำอะไรได้บ้างในระหว่างการรีแฟคเตอร์?

AI นั้นแข็งแกร่งที่สุดในส่วนของการปรับโครงสร้างใหม่ที่มีรูปแบบหนักและมีกลไกมากที่สุด และมีความมุ่งหมายที่อ่อนแอที่สุด

มันทำงานได้ดีในการเปลี่ยนชื่อข้ามโมดูล, แยกฟังก์ชั่น, แปลง callback chains เป็น async/await, แบ่งคลาส god เป็นผู้ทำงานร่วมกันที่มีขนาดเล็กลง และแปลไฟล์จากสำนวนเฟรมเวิร์กหนึ่งไปยังอีกเฟรมเวิร์กสำนวนหนึ่ง จะต้องดิ้นรนเมื่อโครงสร้างที่ "ถูกต้อง" ขึ้นอยู่กับกฎเกณฑ์ทางธุรกิจที่อยู่ในหัวของใครบางคนหรือในความคิดเห็นของจิราจากปี 2022

งานการปรับโครงสร้างใหม่ AI เชื่อถือได้ที่นี่ ที่ซึ่งมนุษย์ต้องตัดสินใจ
เปลี่ยนชื่อสัญลักษณ์ทุกที่ เชิงกล มีขอบเขต พลิกกลับได้ ชื่อใหม่ตรงกับโดเมนหรือไม่
แยกฟังก์ชันหรือส่วนประกอบ แพทเทิร์น เป็นที่รู้จักกันดี ตะเข็บไหนน่าสร้าง
แทนที่ลูปด้วยแผนที่/ตัวกรอง ท้องถิ่นและทดสอบได้ ความสามารถในการอ่านดีขึ้นจริงหรือไม่
แยกคลาส 900 บรรทัด แนะนำการจัดกลุ่มอย่างรวดเร็ว ความรับผิดชอบใดเป็นของร่วมกันอย่างแท้จริง
ย้ายข้อมูล API ที่เลิกใช้งานแล้ว รู้ลายเซ็นใหม่ Edge กรณีการโทรแบบเก่าได้รับการจัดการอย่างเงียบ ๆ

นิสัยที่เป็นประโยชน์: ขอให้โมเดล อธิบาย โค้ดที่มีอยู่ก่อนที่จะเปลี่ยนแปลงสิ่งใด หากการสรุปของมันผิด การรีแฟคเตอร์ก็จะผิดเช่นกัน และคุณก็จับมันได้ฟรี

คุณจะรักษาการทดสอบให้เป็นสีเขียวในขณะที่ AI เขียนโค้ดใหม่ได้อย่างไร

การทดสอบเป็นสัญญา หากไม่มีสิ่งเหล่านี้ การรีแฟกเตอร์ AI ก็ถือเป็นการคาดเดาที่มีความหวัง

เมื่อโค้ดที่คุณต้องการสัมผัสไม่ครอบคลุม ให้เขียนการทดสอบการกำหนดลักษณะก่อน สิ่งเหล่านี้จะบันทึกสิ่งที่โค้ดทำในปัจจุบัน ไม่ใช่สิ่งที่ควรทำ ดังนั้นการเปลี่ยนแปลงพฤติกรรมใดๆ จะแสดงเป็นการทดสอบสีแดง เทคนิคนี้ได้อธิบายไว้ใน รายการ Wikipedia เกี่ยวกับการทดสอบลักษณะเฉพาะ และเป็นตาข่ายนิรภัยที่มีค่าที่สุดเพียงจุดเดียวก่อนที่จะปล่อยให้โมเดลหลุดจากโค้ดเดิม

ใช้คำสั่งนี้กับโมดูลที่ยังไม่ผ่านการทดสอบ:

  1. รันเส้นทางโค้ดและบันทึกอินพุตและเอาต์พุตจริง
  2. เขียนการทดสอบเพื่อยืนยันผลลัพธ์ที่แน่นอน แม้แต่การทดสอบที่น่าเกลียดก็ตาม
  3. ยืนยันว่าห้องชุดเป็นสีเขียวและรวดเร็วพอสมควร
  4. ปล่อยให้ AI ปรับโครงสร้างใหม่เป็นขั้นตอนเล็กๆ
  5. สังเกตการทดสอบที่เปลี่ยนเป็นสีแดงแล้วหยุดตรงนั้น

วิศวกรพิมพ์เทอร์มินัลบนแล็ปท็อปข้างจอภาพที่เต็มไปด้วยซอร์สโค้ดในระหว่างการรีแฟคเตอร์

ทีมที่ฉันทำงานด้วยมีเครื่องคำนวณใบแจ้งหนี้ 600 บรรทัดที่ไม่มีใครอยากแตะต้อง เราใช้เวลาช่วงเช้าเขียนการทดสอบการกำหนดลักษณะเฉพาะ 30 รายการกับตัวอย่างการผลิต จากนั้นขอให้แบบจำลองแบ่งฟังก์ชันออกเป็นขั้นตอนที่ระบุชื่อ การทดสอบสองครั้งกลายเป็นสีแดงเมื่อปัดเศษ สีแดงนั้นคือประเด็นทั้งหมด: โค้ดเก่าถูกปัดเศษต่อบรรทัดรายการ ส่วนรีแฟคเตอร์ถูกปัดเศษหนึ่งครั้งในตอนท้าย เราเก็บพฤติกรรมเก่าและจัดส่ง สำหรับกลยุทธ์การทดสอบเชิงลึก ให้ใช้วงตรวจสอบและยืนยันด้านล่าง

เวิร์กโฟลว์การปรับโครงสร้าง AI ที่ปลอดภัยทีละขั้นตอน

ใช้ลูปเดียวกันไม่ว่าคุณจะอยู่ในผู้ช่วย IDE หรือเอเจนต์เทอร์มินัลเช่น Claude Code

  1. กำหนดขอบเขต ตั้งชื่อการปรับโครงสร้างใหม่รายการหนึ่งโดยมีขอบเขตที่ชัดเจน: "แยกตรรกะการลองใหม่จากOrderServiceไปเป็นRetryPolicy" ไม่ใช่ "ล้างคำสั่ง"
  2. ลักษณะการทำงานของการปักหมุด ตรวจสอบให้แน่ใจว่าการทดสอบครอบคลุมบรรทัดที่คุณจะเปลี่ยน เพิ่มหากหายไป
  3. แจ้งอย่างหวุดหวิด วางโค้ดเป้าหมายและข้อจำกัด 1 รายการ: คงอินเทอร์เฟซสาธารณะไว้
  4. อ่านความแตกต่าง ระวังสาขาที่หลุด เปลี่ยนค่าเริ่มต้น สลับตัวดำเนินการ และลบเช็คว่างออก
  5. ตรวจสอบ ทำการทดสอบ ตัวตรวจสอบประเภท และลินเตอร์ รันการทดสอบการรวมระบบอีกครั้งหาก I/O มีการเปลี่ยนแปลง
  6. คอมมิตขนาดเล็ก รีแฟคเตอร์สีเขียวหนึ่งรายการต่อคอมมิต ตั้งชื่อโครงสร้างที่เปลี่ยนแปลง
  7. เปิด PR ที่ตรวจสอบได้ Keep diffs น้อยพอที่จะให้เพื่อนร่วมทีมสามารถอ่านได้

ขั้นตอนการทบทวนมีความสำคัญมากที่สุด ความแตกต่างที่สร้างโดย AI ดูมั่นใจและสะอาดตา ซึ่งเป็นเหตุผลว่าทำไมมันถึงผ่านไปได้ อ่านทุกบรรทัดที่เปลี่ยนแปลง และสงสัยถึงการลบใดๆ ที่คุณไม่ได้ขอ

คุณจะมองเห็นรหัสกลิ่นด้วย AI ได้อย่างไร

AI เก่งในการตั้งชื่อกลิ่น จากนั้นก็ปานกลางในการแก้ไข ใช้เป็นตัวตรวจจับก่อนและตัวแก้ไขลำดับที่สอง

ชี้ไปที่ไฟล์แล้วถามว่าฟังก์ชันใดยาวเกินไป ตำแหน่งที่การทำซ้ำซ่อนอยู่ พารามิเตอร์ใดที่เดินทางไปด้วยกันและควรเป็นออบเจ็กต์ และตำแหน่งที่เงื่อนไขได้ขยายเป็นพุ่ม แคตตาล็อกกลิ่นโค้ด ของ Fowler ยังคงเป็นคำศัพท์ที่ใช้ร่วมกันที่ชัดเจนที่สุด และแบบจำลองที่รู้คำศัพท์เหล่านั้นจะช่วยให้คุณค้นพบสิ่งที่ผู้วิจารณ์สามารถโต้แย้งได้

กลิ่นรหัส สิ่งที่ AI ทำเครื่องหมาย การตรวจสอบติดตามผลของคุณ
วิธียาว ฟังก์ชั่นมากกว่า 50 บรรทัดเพื่อทำงานหลายอย่าง ขั้นตอนที่แยกออกมามีความสอดคล้องกันจริงหรือ?
ตรรกะที่ซ้ำกัน บล็อกข้ามไฟล์ที่ใกล้เคียงกัน การทำซ้ำเกิดขึ้นโดยบังเอิญหรือโดยเจตนา?
มีลักษณะอิจฉา วิธีการเข้าถึงข้อมูลของวัตถุอื่น พฤติกรรมควรย้ายหรือข้อมูล?
ความหลงใหลดั้งเดิม สตริงและ ints ยืนหยัดเพื่อแนวคิด ประเภทที่มีมูลค่าน้อยจะจ่ายเองหรือไม่?
การผ่าตัดด้วยปืนลูกซอง การเปลี่ยนแปลงหนึ่งรายการบังคับให้แก้ไขในหลายที่ มีตะเข็บขาดหายไปหรือเป็นนามธรรมหรือไม่?

อย่าปล่อยให้ "แก้ไขทุกกลิ่น" ในครั้งเดียว รายงานกลิ่นเป็นรายการที่ต้องทำ ไม่ใช่คำสั่ง การทำสำเนาบางอย่างเป็นเรื่องปกติ ฟังก์ชันยาวบางฟังก์ชันยาวเนื่องจากโดเมนเป็น

เครื่องมือและตำแหน่งที่พอดี

เครื่องมือมีความสำคัญน้อยกว่าการวนรอบ แต่หมวดหมู่จะกำหนดวิธีการทำงานของคุณ

  • ผู้ช่วยแบบอินไลน์ของ IDE แนะนำการแก้ไขในขณะที่คุณพิมพ์และเน้นสำหรับรีแฟคเตอร์ขนาดเล็กในเครื่อง
  • ผู้ช่วยแบบแชท เหมาะสำหรับ "อธิบายแล้วปรับโครงสร้างใหม่" ในไฟล์หรือฟังก์ชันที่วาง
  • ตัวแทนเทอร์มินัล สามารถเรียกใช้การทดสอบและแก้ไขไฟล์จำนวนมาก ซึ่งมีประสิทธิภาพและมีความเสี่ยงในระดับที่เท่าเทียมกัน
  • การวิเคราะห์แบบคงที่และรอยต่อ ตรวจพบปัญหาทางกลไกที่บางครั้ง AI ประดิษฐ์ขึ้น ดังนั้น ให้คอยติดตามปัญหาเหล่านั้น

Two engineers reviewing source code on a large screen while planning a refactor

ไม่ว่าคุณจะเลือกอะไรก็ตาม การควบคุมเวอร์ชันคืออุปกรณ์ความปลอดภัยที่แท้จริงของคุณ คอมมิตก่อนที่คุณจะเริ่ม แยกงาน และเก็บแต่ละขั้นตอนของ AI ไว้เป็นคอมมิตของตัวเอง เมื่อตัวแทนแก้ไขไฟล์สิบสองไฟล์และการยืนยันหนึ่งรายการเสียหาย ประวัติที่สะอาดจะช่วยให้คุณแบ่งส่วนการเปลี่ยนแปลงที่แน่นอน แทนที่จะอ่านทุกอย่างซ้ำ

หากคุณยังแก้ปัญหาความล้มเหลวที่เกิดจากการปรับโครงสร้างในช่วงกลาง การวนซ้ำแบบมีระเบียบแบบเดียวกันจะเข้าคู่กับเวิร์กโฟลว์นี้ได้ดี มีคำถามเกี่ยวกับกระบวนการหรือไม่? คำถามที่พบบ่อย ครอบคลุมถึงคำถามที่พบบ่อย

คุณจะปรับปรุงโค้ดเดิมให้ทันสมัยทีละน้อยได้อย่างไร?

บิ๊กแบงเขียนซ้ำล้มเหลวในการเคลื่อนไหวช้า การปรับปรุงให้ทันสมัยอย่างค่อยเป็นค่อยไปมีชัยเพราะทุกย่างก้าวมีการจัดส่ง

รูปแบบ Strangler เป็นรูปแบบที่ได้รับการพิสูจน์แล้ว: สร้างเส้นทางใหม่ข้างเส้นทางเก่า กำหนดเส้นทางการโทรผ่านเส้นทางนั้น ตรวจสอบ จากนั้นขยายจนกว่าโค้ดเก่าจะตายและคุณลบมันทิ้ง Martin Fowler บันทึกสิ่งนี้ว่าเป็น แอปพลิเคชัน strangler fig และ AI ทำให้การทำงานต่อชิ้นเร็วขึ้นโดยไม่ต้องเปลี่ยนกลยุทธ์

ใช้ AI ภายในแต่ละส่วน ไม่ใช่ทั่วทั้งการย้ายข้อมูล:

  1. เลือกปลายทาง หน้าจอ หรือโมดูลหนึ่งรายการเพื่อปรับปรุงให้ทันสมัย
  2. ปักหมุดพฤติกรรมด้วยการทดสอบเทียบกับการใช้งานปัจจุบัน
  3. ขอให้แบบจำลองสร้างชิ้นส่วนเวอร์ชันใหม่ขึ้นมา
  4. รันทั้งเก่าและใหม่โดยใช้อินพุตเดียวกันและแยกเอาต์พุต
  5. ตัดเป็นชิ้น ดูการผลิต จากนั้นย้ายไปยังชิ้นถัดไป

ซึ่งจะทำให้รัศมีการระเบิดเล็กลง หากโมเดลเข้าใจสไลซ์ผิด คุณจะสูญเสียสไลซ์ ไม่ใช่ระบบ

เมื่อใดที่คุณไม่ควรปล่อยให้ AI ปรับโครงสร้างใหม่?

โค้ดบางส่วนควรเป็นแบบแมนนวลจนกว่าคุณจะเข้าใจโค้ดนั้นอย่างถ่องแท้

กด AI ไว้เมื่อ:

  • โค้ดจะจัดการเรื่องเงิน การตรวจสอบสิทธิ์ การอนุญาต หรือสิ่งอื่นๆ ที่เกี่ยวข้องกับการปฏิบัติตามข้อกำหนด
  • ยังไม่มีการทดสอบและคุณยังไม่สามารถเขียนการทดสอบการกำหนดคุณลักษณะได้
  • ลักษณะการทำงานขึ้นอยู่กับกฎเกณฑ์ทางธุรกิจที่ไม่มีเอกสาร
  • ความแตกต่างจะใหญ่เกินไปสำหรับทุกคนที่จะตรวจสอบโดยสุจริต
  • จุดบกพร่องเล็กๆ น้อยๆ ที่นี่อาจมีราคาแพงหรือตรวจพบได้ยากในการผลิต

ในกรณีดังกล่าว ให้ใช้ AI เพื่อ อธิบาย และ วางแผน จากนั้นทำการแก้ไขด้วยตนเองในขั้นตอนเล็กๆ ที่ผ่านการตรวจสอบแล้ว การรีแฟคเตอร์ที่เร็วที่สุดคือรีแฟคเตอร์ที่คุณไม่ต้องเปลี่ยนกลับ ปักหมุดพฤติกรรม เปลี่ยนแปลงสิ่งหนึ่ง ทำให้ห้องเป็นสีเขียว และปล่อยให้ AI จัดการการพิมพ์ในขณะที่คุณตัดสิน

สำหรับเวิร์กโฟลว์ตัวแทนที่กว้างขึ้นรอบลูปนี้ โปรดดูคำแนะนำ ระบบตัวแทน AI อัตโนมัติ และหมายเหตุ การพัฒนา AI API การเขียนบทความ บริบทโมเดล MCP ครอบคลุมถึงวิธีที่เอเจนต์เข้าถึงเครื่องมือภายนอกที่บางครั้งจำเป็นต้องมีการปรับโครงสร้างใหม่

เครดิตรูปภาพ

รูปภาพบทความได้มาจาก Pexels และจัดเก็บไว้ในโปรเจ็กต์ CDN เพื่อการแสดงผลหน้าเว็บที่เสถียร

ใช้เครื่องมือฟรีของเราขณะทำตามคู่มือนี้

ภาพปกของ เครื่องมือย่อขนาดภาพจำนวนมาก: ปรับขนาดรูปภาพหลายร้อยรูปได้ในครั้งเดียว (ฟรี)

Wed Mar 25 2026 20:00:00 GMT-0400 (Eastern Daylight Time)

เครื่องมือย่อขนาดภาพจำนวนมาก: ปรับขนาดรูปภาพหลายร้อยรูปได้ในครั้งเดียว (ฟรี)

ปรับขนาดรูปภาพจำนวนมากได้ฟรี ด้วยเครื่องมือบนเบราว์เซอร์, ImageMagick, XnConvert หรือสคริปต์ Python มอบการประหยัดไบต์จริงและขั้นตอนการทำงานแบบแบทช์ที่ปลอดภัย

ภาพปกของ WebP Converter: วิธีแปลงรูปภาพเป็น WebP (พร้อมวัดขนาดจริง)

Wed Mar 18 2026 20:00:00 GMT-0400 (Eastern Daylight Time)

WebP Converter: วิธีแปลงรูปภาพเป็น WebP (พร้อมวัดขนาดจริง)

แปลงไฟล์ JPEG และ PNG ให้เป็น WebP เพื่อให้ได้ไฟล์เว็บที่มีขนาดเล็กลง ด้วยการวัดขนาดที่แม่นยำ คำสั่ง cwebp, วิธีใช้ Python และเบราว์เซอร์ รวมถึงกลยุทธ์สำรองสำหรับ JPEG/PNG

ภาพปกของ Real-ESRGAN AI Upscaling: วิธีการทำงานและแนวทางการใช้งาน

Wed Mar 11 2026 20:00:00 GMT-0400 (Eastern Daylight Time)

Real-ESRGAN AI Upscaling: วิธีการทำงานและแนวทางการใช้งาน

เรียนรู้ว่า Real-ESRGAN คืออะไร และ super-resolution ที่ใช้ GAN ทำงานอย่างไร รวมถึงจุดเด่น (เช่น 4x upscaling ของรูปภาพและงานศิลปะ) จุดที่ควรระวัง พร้อมคำสั่งและการจำกัดขอบเขตอย่างตรงไปตรงมา