Fri Jun 26 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
การปรับโครงสร้างโค้ดที่ได้รับความช่วยเหลือจาก AI โดยไม่ทำลายสิ่งต่าง ๆ
วิธีที่วิศวกรทำงานใช้ AI เพื่อปรับโครงสร้างโค้ดอย่างปลอดภัย: ตรวจจับกลิ่นโค้ด ปรับปรุงโมดูลเดิมให้ทันสมัย รักษาการทดสอบสีเขียว และเลือกเครื่องมือที่เหมาะสม

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

คำตอบด่วน: คุณจะปรับโครงสร้างใหม่ด้วย AI โดยไม่ทำลายสิ่งต่าง ๆ ได้อย่างไร
ปฏิบัติต่อ AI ในฐานะวิศวกรรุ่นเยาว์ที่รวดเร็ว ผู้ไม่เคยเหนื่อยและไม่เคยอ่านตั๋ว คุณต้องรับผิดชอบต่อพฤติกรรม
ปักหมุดพฤติกรรมด้วยการทดสอบก่อน จากนั้นจึงขอการเปลี่ยนแปลงเล็กๆ น้อยๆ ทีละรายการ จากนั้นตรวจสอบความแตกต่างก่อนที่คุณจะยอมรับ การปรับโครงสร้างใหม่หมายถึงการเปลี่ยนแปลงโครงสร้างในขณะที่ยังคงรักษาพฤติกรรมที่สังเกตได้เหมือนเดิม ซึ่งเป็นคำจำกัดความที่ Martin Fowler ระบุไว้ใน แค็ตตาล็อกการปรับโครงสร้างใหม่ หากการเปลี่ยนแปลงเปลี่ยนแปลงพฤติกรรม ถือเป็นการเขียนใหม่หรือแก้ไขข้อบกพร่อง และจำเป็นต้องมีการตรวจสอบที่แตกต่างกัน
ขั้นตอนการทำงานที่ยึดถือตามกำหนดเวลาจริง:
- ล็อคพฤติกรรมปัจจุบันด้วยการทดสอบลักษณะเฉพาะ
- ให้เป้าหมายที่แคบและมีชื่อแก่ AI ("แยกการตรวจสอบนี้ออกเป็นฟังก์ชันล้วนๆ")
- อ่านความแตกต่างแบบเต็ม ไม่ใช่แค่บทสรุป
- รันชุดโปรแกรมและ linter ก่อนที่จะคอมมิต
- ยืนยันแต่ละขั้นตอนสีเขียวแยกกันเพื่อให้คุณสามารถแบ่งส่วนได้ในภายหลัง
เก็บการเปลี่ยนแปลงไว้รวมกัน การรีแฟกเตอร์ 40 บรรทัดที่ผ่านการตรวจสอบจะเหนือกว่า "การล้างข้อมูล" 2,000 บรรทัดที่ไม่มีผู้ตรวจสอบสามารถตรวจสอบได้
AI สามารถทำอะไรได้บ้างในระหว่างการรีแฟคเตอร์?
AI นั้นแข็งแกร่งที่สุดในส่วนของการปรับโครงสร้างใหม่ที่มีรูปแบบหนักและมีกลไกมากที่สุด และมีความมุ่งหมายที่อ่อนแอที่สุด
มันทำงานได้ดีในการเปลี่ยนชื่อข้ามโมดูล, แยกฟังก์ชั่น, แปลง callback chains เป็น async/await, แบ่งคลาส god เป็นผู้ทำงานร่วมกันที่มีขนาดเล็กลง และแปลไฟล์จากสำนวนเฟรมเวิร์กหนึ่งไปยังอีกเฟรมเวิร์กสำนวนหนึ่ง จะต้องดิ้นรนเมื่อโครงสร้างที่ "ถูกต้อง" ขึ้นอยู่กับกฎเกณฑ์ทางธุรกิจที่อยู่ในหัวของใครบางคนหรือในความคิดเห็นของจิราจากปี 2022
| งานการปรับโครงสร้างใหม่ | AI เชื่อถือได้ที่นี่ | ที่ซึ่งมนุษย์ต้องตัดสินใจ |
|---|---|---|
| เปลี่ยนชื่อสัญลักษณ์ทุกที่ | เชิงกล มีขอบเขต พลิกกลับได้ | ชื่อใหม่ตรงกับโดเมนหรือไม่ |
| แยกฟังก์ชันหรือส่วนประกอบ | แพทเทิร์น เป็นที่รู้จักกันดี | ตะเข็บไหนน่าสร้าง |
| แทนที่ลูปด้วยแผนที่/ตัวกรอง | ท้องถิ่นและทดสอบได้ | ความสามารถในการอ่านดีขึ้นจริงหรือไม่ |
| แยกคลาส 900 บรรทัด | แนะนำการจัดกลุ่มอย่างรวดเร็ว | ความรับผิดชอบใดเป็นของร่วมกันอย่างแท้จริง |
| ย้ายข้อมูล API ที่เลิกใช้งานแล้ว | รู้ลายเซ็นใหม่ | Edge กรณีการโทรแบบเก่าได้รับการจัดการอย่างเงียบ ๆ |
นิสัยที่เป็นประโยชน์: ขอให้โมเดล อธิบาย โค้ดที่มีอยู่ก่อนที่จะเปลี่ยนแปลงสิ่งใด หากการสรุปของมันผิด การรีแฟคเตอร์ก็จะผิดเช่นกัน และคุณก็จับมันได้ฟรี
คุณจะรักษาการทดสอบให้เป็นสีเขียวในขณะที่ AI เขียนโค้ดใหม่ได้อย่างไร
การทดสอบเป็นสัญญา หากไม่มีสิ่งเหล่านี้ การรีแฟกเตอร์ AI ก็ถือเป็นการคาดเดาที่มีความหวัง
เมื่อโค้ดที่คุณต้องการสัมผัสไม่ครอบคลุม ให้เขียนการทดสอบการกำหนดลักษณะก่อน สิ่งเหล่านี้จะบันทึกสิ่งที่โค้ดทำในปัจจุบัน ไม่ใช่สิ่งที่ควรทำ ดังนั้นการเปลี่ยนแปลงพฤติกรรมใดๆ จะแสดงเป็นการทดสอบสีแดง เทคนิคนี้ได้อธิบายไว้ใน รายการ Wikipedia เกี่ยวกับการทดสอบลักษณะเฉพาะ และเป็นตาข่ายนิรภัยที่มีค่าที่สุดเพียงจุดเดียวก่อนที่จะปล่อยให้โมเดลหลุดจากโค้ดเดิม
ใช้คำสั่งนี้กับโมดูลที่ยังไม่ผ่านการทดสอบ:
- รันเส้นทางโค้ดและบันทึกอินพุตและเอาต์พุตจริง
- เขียนการทดสอบเพื่อยืนยันผลลัพธ์ที่แน่นอน แม้แต่การทดสอบที่น่าเกลียดก็ตาม
- ยืนยันว่าห้องชุดเป็นสีเขียวและรวดเร็วพอสมควร
- ปล่อยให้ AI ปรับโครงสร้างใหม่เป็นขั้นตอนเล็กๆ
- สังเกตการทดสอบที่เปลี่ยนเป็นสีแดงแล้วหยุดตรงนั้น

ทีมที่ฉันทำงานด้วยมีเครื่องคำนวณใบแจ้งหนี้ 600 บรรทัดที่ไม่มีใครอยากแตะต้อง เราใช้เวลาช่วงเช้าเขียนการทดสอบการกำหนดลักษณะเฉพาะ 30 รายการกับตัวอย่างการผลิต จากนั้นขอให้แบบจำลองแบ่งฟังก์ชันออกเป็นขั้นตอนที่ระบุชื่อ การทดสอบสองครั้งกลายเป็นสีแดงเมื่อปัดเศษ สีแดงนั้นคือประเด็นทั้งหมด: โค้ดเก่าถูกปัดเศษต่อบรรทัดรายการ ส่วนรีแฟคเตอร์ถูกปัดเศษหนึ่งครั้งในตอนท้าย เราเก็บพฤติกรรมเก่าและจัดส่ง สำหรับกลยุทธ์การทดสอบเชิงลึก ให้ใช้วงตรวจสอบและยืนยันด้านล่าง
เวิร์กโฟลว์การปรับโครงสร้าง AI ที่ปลอดภัยทีละขั้นตอน
ใช้ลูปเดียวกันไม่ว่าคุณจะอยู่ในผู้ช่วย IDE หรือเอเจนต์เทอร์มินัลเช่น Claude Code
- กำหนดขอบเขต ตั้งชื่อการปรับโครงสร้างใหม่รายการหนึ่งโดยมีขอบเขตที่ชัดเจน: "แยกตรรกะการลองใหม่จาก
OrderServiceไปเป็นRetryPolicy" ไม่ใช่ "ล้างคำสั่ง" - ลักษณะการทำงานของการปักหมุด ตรวจสอบให้แน่ใจว่าการทดสอบครอบคลุมบรรทัดที่คุณจะเปลี่ยน เพิ่มหากหายไป
- แจ้งอย่างหวุดหวิด วางโค้ดเป้าหมายและข้อจำกัด 1 รายการ: คงอินเทอร์เฟซสาธารณะไว้
- อ่านความแตกต่าง ระวังสาขาที่หลุด เปลี่ยนค่าเริ่มต้น สลับตัวดำเนินการ และลบเช็คว่างออก
- ตรวจสอบ ทำการทดสอบ ตัวตรวจสอบประเภท และลินเตอร์ รันการทดสอบการรวมระบบอีกครั้งหาก I/O มีการเปลี่ยนแปลง
- คอมมิตขนาดเล็ก รีแฟคเตอร์สีเขียวหนึ่งรายการต่อคอมมิต ตั้งชื่อโครงสร้างที่เปลี่ยนแปลง
- เปิด PR ที่ตรวจสอบได้ Keep diffs น้อยพอที่จะให้เพื่อนร่วมทีมสามารถอ่านได้
ขั้นตอนการทบทวนมีความสำคัญมากที่สุด ความแตกต่างที่สร้างโดย AI ดูมั่นใจและสะอาดตา ซึ่งเป็นเหตุผลว่าทำไมมันถึงผ่านไปได้ อ่านทุกบรรทัดที่เปลี่ยนแปลง และสงสัยถึงการลบใดๆ ที่คุณไม่ได้ขอ
คุณจะมองเห็นรหัสกลิ่นด้วย AI ได้อย่างไร
AI เก่งในการตั้งชื่อกลิ่น จากนั้นก็ปานกลางในการแก้ไข ใช้เป็นตัวตรวจจับก่อนและตัวแก้ไขลำดับที่สอง
ชี้ไปที่ไฟล์แล้วถามว่าฟังก์ชันใดยาวเกินไป ตำแหน่งที่การทำซ้ำซ่อนอยู่ พารามิเตอร์ใดที่เดินทางไปด้วยกันและควรเป็นออบเจ็กต์ และตำแหน่งที่เงื่อนไขได้ขยายเป็นพุ่ม แคตตาล็อกกลิ่นโค้ด ของ Fowler ยังคงเป็นคำศัพท์ที่ใช้ร่วมกันที่ชัดเจนที่สุด และแบบจำลองที่รู้คำศัพท์เหล่านั้นจะช่วยให้คุณค้นพบสิ่งที่ผู้วิจารณ์สามารถโต้แย้งได้
| กลิ่นรหัส | สิ่งที่ AI ทำเครื่องหมาย | การตรวจสอบติดตามผลของคุณ |
|---|---|---|
| วิธียาว | ฟังก์ชั่นมากกว่า 50 บรรทัดเพื่อทำงานหลายอย่าง | ขั้นตอนที่แยกออกมามีความสอดคล้องกันจริงหรือ? |
| ตรรกะที่ซ้ำกัน | บล็อกข้ามไฟล์ที่ใกล้เคียงกัน | การทำซ้ำเกิดขึ้นโดยบังเอิญหรือโดยเจตนา? |
| มีลักษณะอิจฉา | วิธีการเข้าถึงข้อมูลของวัตถุอื่น | พฤติกรรมควรย้ายหรือข้อมูล? |
| ความหลงใหลดั้งเดิม | สตริงและ ints ยืนหยัดเพื่อแนวคิด | ประเภทที่มีมูลค่าน้อยจะจ่ายเองหรือไม่? |
| การผ่าตัดด้วยปืนลูกซอง | การเปลี่ยนแปลงหนึ่งรายการบังคับให้แก้ไขในหลายที่ | มีตะเข็บขาดหายไปหรือเป็นนามธรรมหรือไม่? |
อย่าปล่อยให้ "แก้ไขทุกกลิ่น" ในครั้งเดียว รายงานกลิ่นเป็นรายการที่ต้องทำ ไม่ใช่คำสั่ง การทำสำเนาบางอย่างเป็นเรื่องปกติ ฟังก์ชันยาวบางฟังก์ชันยาวเนื่องจากโดเมนเป็น
เครื่องมือและตำแหน่งที่พอดี
เครื่องมือมีความสำคัญน้อยกว่าการวนรอบ แต่หมวดหมู่จะกำหนดวิธีการทำงานของคุณ
- ผู้ช่วยแบบอินไลน์ของ IDE แนะนำการแก้ไขในขณะที่คุณพิมพ์และเน้นสำหรับรีแฟคเตอร์ขนาดเล็กในเครื่อง
- ผู้ช่วยแบบแชท เหมาะสำหรับ "อธิบายแล้วปรับโครงสร้างใหม่" ในไฟล์หรือฟังก์ชันที่วาง
- ตัวแทนเทอร์มินัล สามารถเรียกใช้การทดสอบและแก้ไขไฟล์จำนวนมาก ซึ่งมีประสิทธิภาพและมีความเสี่ยงในระดับที่เท่าเทียมกัน
- การวิเคราะห์แบบคงที่และรอยต่อ ตรวจพบปัญหาทางกลไกที่บางครั้ง AI ประดิษฐ์ขึ้น ดังนั้น ให้คอยติดตามปัญหาเหล่านั้น

ไม่ว่าคุณจะเลือกอะไรก็ตาม การควบคุมเวอร์ชันคืออุปกรณ์ความปลอดภัยที่แท้จริงของคุณ คอมมิตก่อนที่คุณจะเริ่ม แยกงาน และเก็บแต่ละขั้นตอนของ AI ไว้เป็นคอมมิตของตัวเอง เมื่อตัวแทนแก้ไขไฟล์สิบสองไฟล์และการยืนยันหนึ่งรายการเสียหาย ประวัติที่สะอาดจะช่วยให้คุณแบ่งส่วนการเปลี่ยนแปลงที่แน่นอน แทนที่จะอ่านทุกอย่างซ้ำ
หากคุณยังแก้ปัญหาความล้มเหลวที่เกิดจากการปรับโครงสร้างในช่วงกลาง การวนซ้ำแบบมีระเบียบแบบเดียวกันจะเข้าคู่กับเวิร์กโฟลว์นี้ได้ดี มีคำถามเกี่ยวกับกระบวนการหรือไม่? คำถามที่พบบ่อย ครอบคลุมถึงคำถามที่พบบ่อย
คุณจะปรับปรุงโค้ดเดิมให้ทันสมัยทีละน้อยได้อย่างไร?
บิ๊กแบงเขียนซ้ำล้มเหลวในการเคลื่อนไหวช้า การปรับปรุงให้ทันสมัยอย่างค่อยเป็นค่อยไปมีชัยเพราะทุกย่างก้าวมีการจัดส่ง
รูปแบบ Strangler เป็นรูปแบบที่ได้รับการพิสูจน์แล้ว: สร้างเส้นทางใหม่ข้างเส้นทางเก่า กำหนดเส้นทางการโทรผ่านเส้นทางนั้น ตรวจสอบ จากนั้นขยายจนกว่าโค้ดเก่าจะตายและคุณลบมันทิ้ง Martin Fowler บันทึกสิ่งนี้ว่าเป็น แอปพลิเคชัน strangler fig และ AI ทำให้การทำงานต่อชิ้นเร็วขึ้นโดยไม่ต้องเปลี่ยนกลยุทธ์
ใช้ AI ภายในแต่ละส่วน ไม่ใช่ทั่วทั้งการย้ายข้อมูล:
- เลือกปลายทาง หน้าจอ หรือโมดูลหนึ่งรายการเพื่อปรับปรุงให้ทันสมัย
- ปักหมุดพฤติกรรมด้วยการทดสอบเทียบกับการใช้งานปัจจุบัน
- ขอให้แบบจำลองสร้างชิ้นส่วนเวอร์ชันใหม่ขึ้นมา
- รันทั้งเก่าและใหม่โดยใช้อินพุตเดียวกันและแยกเอาต์พุต
- ตัดเป็นชิ้น ดูการผลิต จากนั้นย้ายไปยังชิ้นถัดไป
ซึ่งจะทำให้รัศมีการระเบิดเล็กลง หากโมเดลเข้าใจสไลซ์ผิด คุณจะสูญเสียสไลซ์ ไม่ใช่ระบบ
เมื่อใดที่คุณไม่ควรปล่อยให้ 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 มอบการประหยัดไบต์จริงและขั้นตอนการทำงานแบบแบทช์ที่ปลอดภัย

Wed Mar 18 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
WebP Converter: วิธีแปลงรูปภาพเป็น WebP (พร้อมวัดขนาดจริง)
แปลงไฟล์ JPEG และ PNG ให้เป็น WebP เพื่อให้ได้ไฟล์เว็บที่มีขนาดเล็กลง ด้วยการวัดขนาดที่แม่นยำ คำสั่ง cwebp, วิธีใช้ Python และเบราว์เซอร์ รวมถึงกลยุทธ์สำรองสำหรับ JPEG/PNG

Wed Mar 11 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
Real-ESRGAN AI Upscaling: วิธีการทำงานและแนวทางการใช้งาน
เรียนรู้ว่า Real-ESRGAN คืออะไร และ super-resolution ที่ใช้ GAN ทำงานอย่างไร รวมถึงจุดเด่น (เช่น 4x upscaling ของรูปภาพและงานศิลปะ) จุดที่ควรระวัง พร้อมคำสั่งและการจำกัดขอบเขตอย่างตรงไปตรงมา