ปรับโครงสร้างฟังก์ชันขนาดใหญ่โดยใช้โหมด Agent ของ GitHub Copilot
การใช้โหมดตัวแทนของ GitHub Copilot ก็เหมือนกับการมีผู้ช่วยที่คอยช่วยคุณพัฒนาและบํารุงรักษาโค้ดของคุณเสมอ
ในโหมดตัวแทน คุณมอบหมายงานให้กับ GitHub Copilot โดยใช้ข้อความแจ้งภาษาธรรมชาติในแผงแชท GitHub Copilot เริ่มต้นด้วยการวิเคราะห์ฐานรหัสของคุณ โดยใช้งานที่ได้รับมอบหมายเพื่อสร้างบริบทที่จําเป็น เอเจนต์สร้างแผนสําหรับการทํางานให้สําเร็จ และแสดงรายการของงานย่อยที่จําเป็น จากนั้นจะเปิดและแก้ไขไฟล์ที่เกี่ยวข้องในตัวแก้ไขโค้ด ตัวแทนจะทําการวิเคราะห์ การวางแผน และการใช้งานให้เสร็จสมบูรณ์โดยอัตโนมัติ และให้ความเห็นที่ทํางานอยู่ในแผงแชท เพื่อให้คุณสามารถติดตามความคืบหน้าได้ หากจําเป็น ตัวแทนจะขอคําชี้แจง ข้อมูลเพิ่มเติม หรืออนุญาตให้ดําเนินการเฉพาะ เมื่อตัวแทนทํางานเสร็จแล้ว คุณสามารถตรวจสอบการแก้ไขและอนุมัติ (หรือปฏิเสธ) การเปลี่ยนแปลงแต่ละรายการได้ คุณยังคงควบคุมได้ตลอดกระบวนการ
แนวทางปฏิบัติที่ดีที่สุด
ลองพิจารณาเคล็ดลับเหล่านี้เพื่อใช้โหมดตัวแทนให้เกิดประโยชน์สูงสุด:
- แบ่งการปรับโครงสร้างใหม่ออกเป็นขั้นตอนเล็กๆ
- ตรวจสอบการเปลี่ยนแปลงแต่ละรายการอย่างรอบคอบ
- รวบรวมและทดสอบหลังจากแต่ละขั้นตอน
คําสั่งการปรับโครงสร้างทั่วไป
ต่อไปนี้เป็นตัวอย่างข้อความแจ้งสําหรับงานการปรับโครงสร้างทั่วไป:
- "แยกรหัสการตรวจสอบที่เลือกลงในเมธอดส่วนตัวใหม่ที่มีชื่อ
ValidateOrderซึ่งใช้พารามิเตอร์ Order และส่งคืน bool ตรวจสอบให้แน่ใจว่าตรรกะการตรวจสอบความถูกต้องทั้งหมดถูกย้ายและไซต์การเรียกเดิมใช้ค่าที่ส่งคืนอย่างเหมาะสม" - "ตรวจสอบรหัสที่เลือก ระบุและแยกตรรกะการคํานวณภาษีที่ซ้ํากันทั้งหมดลงในวิธีการ
CalculateTaxคงที่ส่วนตัวใหม่ที่ใช้พารามิเตอร์ที่จําเป็น (จํานวนเงิน taxRate ภูมิภาค) และส่งคืนจํานวนภาษีที่คํานวณได้ แทนที่การคํานวณที่ซ้ํากันทั้งหมดด้วยการเรียกใช้เมธอดนี้" - "ตรวจสอบรหัสที่เลือก แปลงห่วงโซ่ if/else นี้เป็นนิพจน์สวิตช์ที่ทันสมัย เพื่อให้แน่ใจว่าครอบคลุมทุกกรณีและตรรกะยังคงเท่ากัน ใช้การจับคู่รูปแบบตามความเหมาะสมและรักษาประเภทการส่งคืนเดิม"
- "ตรวจสอบรหัสที่เลือก แยกการกําหนดราคาและการคํานวณทั้งหมดลงในวิธีการ
ComputeTotalsส่วนตัวใหม่ที่ใช้พารามิเตอร์ Order ทําการคํานวณทั้งหมด และอัปเดตคุณสมบัติทั้งหมดของคําสั่งซื้อ ตรวจสอบให้แน่ใจว่าไม่มีตรรกะการคํานวณหลงเหลืออยู่ในวิธีการเดิม"
เวิร์กโฟลว์ตัวอย่าง
สมมติว่าคุณมีฟังก์ชัน ProcessOrder ขนาดใหญ่ที่จัดการการประมวลผลคําสั่งซื้อ รวมถึงการตรวจสอบความถูกต้อง การคํานวณราคา การบันทึกลงในฐานข้อมูล และการส่งการแจ้งเตือน ฟังก์ชันนี้มีความยาวมากกว่า 200 บรรทัดและจําเป็นต้องแยกย่อย
คุณอาจใช้ขั้นตอนต่อไปนี้เพื่อปรับโครงสร้างฟังก์ชัน:
แยกส่วนแรก:
"แยกการตรวจสอบอินพุตที่ด้านบนของ
ProcessOrderเป็นวิธีการValidateOrder(order)ใหม่ที่ส่งคืน bool"แยกส่วนที่สอง:
"ย้ายการคํานวณราคาไปสู่วิธีการ
ComputeTotals(order)ใหม่ที่อัปเดตorder.Total"จัดการตรรกะที่เหลืออยู่:
แยกตรรกะการบันทึกและการแจ้งเตือนในทํานองเดียวกัน หรือปล่อยให้อยู่ในฟังก์ชันหลักหากตอนนี้สั้นและชัดเจน
เก็บกวาด:
เปลี่ยนชื่อตัวแปร ลบโค้ดที่ไม่ได้ใช้ และรับรองความสอดคล้องกัน
ใช้คําแนะนําโหมดถาม
ใช้รายละเอียดของโหมดถามเพื่อแนะนําโหมดเอเจนท์:
- ทบทวนแผนที่เสนอโดยโหมดถามและคําถามติดตามผลของคุณ
- กําหนดแผนการปรับโครงสร้างขั้นสุดท้ายสําหรับโหมดเอเจนต์
- ใช้การวิเคราะห์จากโหมดถามเพื่อสร้างชุดข้อความแจ้งที่ชัดเจนและเฉพาะเจาะจงสําหรับโหมดเอเจนต์ ใช้ชื่อฟังก์ชันและรายการพารามิเตอร์ที่แนะนําในข้อความแจ้งของคุณตามความเหมาะสม
เคล็ดลับ
ปฏิบัติต่อโหมดเอเจนต์เหมือนนักพัฒนารุ่นเยาว์ในทีมของคุณ ให้คําแนะนําที่ชัดเจน ทบทวนงานของพวกเขา และแก้ไขตามความจําเป็น
สิ่งที่ควรระวังระหว่างการตรวจสอบ
ตรวจสอบการเปลี่ยนแปลงที่ทําโดยตัวแทนเสมอ พิจารณารายการตรวจสอบต่อไปนี้:
- การเก็บรักษาตรรกะ: ตรวจสอบให้แน่ใจว่าไม่มีการเปลี่ยนแปลงลักษณะการทํางาน
- การจัดการพารามิเตอร์: Copilot อาจลืมส่งตัวแปรที่จําเป็น
- การตั้งชื่อและตัวแก้ไขการเข้าถึง: ยืนยันว่าตรงกับสไตล์ฐานรหัสของคุณ
- บรรทัดที่ไม่ได้รับ: หาก Copilot ข้ามบรรทัด ให้ย้ายด้วยตนเองหรือถามอีกครั้ง
จัดการผลลัพธ์ที่ไม่คาดคิด
เมื่อตัวแทนสร้างผลลัพธ์ที่ไม่เป็นไปตามที่คุณคาดไว้:
- เลิกทําการเปลี่ยนแปลงหรือแปลงกลับไฟล์
- ลองทําตามขั้นตอนที่เล็กกว่าหรือข้อความแจ้งที่แม่นยํายิ่งขึ้น
- แก้ไขปัญหาเล็กน้อยด้วยตนเองหรือขอให้ Copilot แก้ไข
Summary
การใช้โหมด Agent ของ GitHub Copilot ช่วยเพิ่มความคล่องตัวในกระบวนการปรับโครงสร้างฟังก์ชันขนาดใหญ่ ด้วยการแบ่งงานออกเป็นขั้นตอนที่จัดการได้และใช้ข้อความแจ้งภาษาธรรมชาติ คุณจะรักษาการควบคุมในขณะที่อนุญาตให้ตัวแทนจัดการกับงานหนักได้ ตรวจสอบการเปลี่ยนแปลงอย่างรอบคอบเสมอเพื่อให้มั่นใจในคุณภาพของโค้ดและความสมบูรณ์ของตรรกะ