รีแฟคเตอร์โค้ดโดยใช้โหมดแชท GitHub Copilot
GitHub Copilot สามารถใช้เพื่อปรับโครงสร้างโค้ดในฐานรหัสของคุณได้ คุณสามารถใช้เอเจนต์มุมมอง Chat เพื่อวิเคราะห์ วางแผน และใช้งานการปรับโครงสร้างโค้ดได้ ตัวแทนมุมมองแชทมีอินเทอร์เฟซที่ใช้งานง่ายสําหรับการจัดการการสนทนาแชทและเข้าถึงคุณสมบัติของ GitHub Copilot มุมมอง Chat ประกอบด้วยตัวแทนที่มีอยู่แล้วภายในต่อไปนี้:
- ถาม: ใช้ "ถาม" เพื่อถามคําถามเกี่ยวกับฐานโค้ดหรือแนวคิดด้านเทคโนโลยีของคุณ คุณสามารถใช้ "ถาม" เพื่ออธิบายโค้ด แนะนําการแก้ไขหรือการแก้ไข หรือให้ข้อมูลที่เกี่ยวข้องกับฐานโค้ด
- วางแผน: ใช้ตัวแทนแผนเพื่อสร้างแผนการใช้งานทีละขั้นตอนที่มีโครงสร้างก่อนที่จะเขียนโค้ดใดๆ เมื่อแผนดูถูกต้อง ให้ส่งต่อไปยังตัวแทนการใช้งานเพื่อดําเนินการ
- ตัวแทน: ใช้เอเจนต์เพื่อเริ่มเวิร์กโฟลว์การเข้ารหัสตัวแทน คุณสามารถใช้เอเจนต์เพื่อเรียกใช้คําสั่ง รันโค้ด หรือทํางานอื่นๆ ในพื้นที่ทํางานของคุณ
สําคัญ
เมื่อคุณใช้เอเจนต์ GitHub Copilot อาจส่งคําขอพรีเมียมหลายรายการเพื่อทํางานเดียวให้เสร็จสมบูรณ์ คําขอแบบพรีเมียมสามารถใช้ได้โดยข้อความแจ้งที่เริ่มต้นโดยผู้ใช้และการดําเนินการติดตามผล GitHub Copilot ดําเนินการในนามของคุณ คําขอพรีเมียมทั้งหมดที่ใช้ขึ้นอยู่กับความซับซ้อนของงาน จํานวนขั้นตอนที่เกี่ยวข้อง และแบบจําลองที่เลือก
ใช้ "ขออนุญาต" เพื่อปรับโครงสร้างโค้ด
คุณสามารถใช้ "ถาม" เพื่อขอความช่วยเหลือเกี่ยวกับงานเขียนโค้ด ทําความเข้าใจแนวคิดที่ยุ่งยาก และปรับปรุงโค้ดของคุณได้ Ask ออกแบบมาสําหรับการสนทนาแบบโต้ตอบกับ GitHub Copilot Chat คุณสามารถถามคําถาม รับคําอธิบาย หรือขอคําแนะนําในแบบเรียลไทม์
เปิดมุมมอง Chat แล้วเลือกถาม
เพิ่มบริบทลงในการสนทนา
Ask รองรับผู้เข้าร่วมการแชท คําสั่งทับ และตัวแปรแชท คุณสามารถเพิ่ม
@workspaceผู้เข้าร่วมแชทหรือ#codebaseในแชทเพื่อให้บริบทพร้อมกับไฟล์หรือโฟลเดอร์ถามคําถามที่ช่วยให้คุณเข้าใจโค้ดที่คุณต้องการปรับโครงสร้างใหม่และการเปลี่ยนแปลงที่คุณต้องการทํา
ตัวอย่างเช่น คุณอาจขอให้ GitHub Copilot ช่วยคุณทําความเข้าใจรหัสการตรวจสอบสิทธิ์ที่มีอยู่ของคุณวิธีอัปเดตวิธีการปัจจุบันโดยใช้ OAuth
สร้างพร้อมท์ที่อธิบายการอัปเดตที่คุณต้องการนําไปใช้
พร้อมท์ของคุณควรมีคําอธิบายของคุณลักษณะโค้ดที่คุณต้องการใช้ เช่น:
@workspace I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files. Explain how to update the EnumHelper class using dictionaries and show me the updated code.ตรวจสอบโค้ดที่แนะนําในมุมมองแชท
การตอบสนองที่แสดงในมุมมอง Chat จะรวมส่วนย่อยของโค้ดที่คุณสามารถใช้เพื่อใช้งานฟีเจอร์นี้ได้ คุณสามารถป้อนพร้อมท์ที่อัปเดตแล้วเพื่อปรับปรุงรหัสหรือขอรายละเอียดเพิ่มเติมได้
เมื่อต้องการใช้โค้ดที่แนะนํา คุณสามารถวางตัวชี้เมาส์ไว้เหนือส่วนย่อยของโค้ด แล้วเลือกระหว่างตัวเลือก นําไปใช้แทรก และ คัดลอก
- นําไปใช้: ใช้คําแนะนําโค้ดกับไฟล์ปัจจุบันในตัวแก้ไข
- แทรก: แทรกคําแนะนําโค้ดที่ตําแหน่งเคอร์เซอร์ปัจจุบันในตัวแก้ไข
- คัดลอก: คัดลอกคําแนะนําโค้ดไปยังคลิปบอร์ด
ทดสอบโค้ดที่สร้างขึ้นใหม่ของคุณเพื่อให้แน่ใจว่าทํางานโดยไม่มีข้อผิดพลาดและสร้างผลลัพธ์ที่คาดหวังไว้
ใช้แผนเพื่อปรับโครงสร้างโค้ด
คุณสามารถใช้ตัวแทน วางแผน เมื่อคุณต้องการสร้างแผนการใช้งานทีละขั้นตอนที่มีโครงสร้างก่อนทําการเปลี่ยนแปลง ตัวแทนแผนจะวิเคราะห์โค้ดเบสของคุณ ถามคําถามที่ชี้แจง และสร้างแผนโดยละเอียด เมื่อแผนดูถูกต้อง คุณสามารถส่งต่อไปยังตัวแทนการใช้งานเพื่อดําเนินการได้
เคล็ดลับ
ใช้ Ask เพื่อประเมินโค้ดที่คุณสนใจในการปรับโครงสร้างใหม่และประเมินตัวเลือกของคุณก่อนที่คุณจะเริ่มทําการเปลี่ยนแปลง คุณสามารถใช้ วางแผน เพื่อสร้างแผนที่มีโครงสร้าง แล้วส่งต่อไปยังตัวแทนการใช้งาน
เปิดมุมมอง Chat แล้วเลือก "วางแผน"
เพิ่มบริบทลงในการสนทนา
ระบุบริบทของพื้นที่ทํางานโดยใช้
#codebaseและโดยการเพิ่มไฟล์ลงในแชทสร้างพร้อมท์ที่อธิบายคุณลักษณะโค้ดที่คุณต้องการนําไปใช้
พร้อมท์ของคุณควรมีคําอธิบายของคุณลักษณะโค้ดที่คุณต้องการใช้ เช่น:
#codebase I need to refactor the `EnumHelper` class and remove any code that uses reflection. Use static dictionaries to supply enum description attributes. Use a separate dictionary for each enum. The dictionaries should use values from the `LoanExtensionStatus.cs`, `LoanReturnStatus.cs`, and `MembershipRenewalStatus.cs` files.ตรวจสอบแผนการใช้งานที่มีโครงสร้างที่ GitHub Copilot สร้างขึ้น
ตัวแทนแผนจะสร้างแผนทีละขั้นตอนที่คุณสามารถตรวจทานได้ก่อนที่จะทําการเปลี่ยนแปลงโค้ดใดๆ
เมื่อแผนดูถูกต้อง ให้ส่งต่อไปยังตัวแทนการใช้งานเพื่อดําเนินการ
คุณสามารถส่งต่อแผนให้กับเอเจนต์เพื่อนําการเปลี่ยนแปลงไปใช้กับฐานรหัสของคุณ
ตรวจสอบการแก้ไขที่แนะนําในตัวแก้ไขโค้ด
ยอมรับหรือละทิ้งการแก้ไขที่แนะนํา
คุณสามารถนําทางผ่านการแก้ไขโดยใช้ลูกศรขึ้นและลง คุณสามารถเก็บ (ยอมรับ) หรือเลิกทํา (ละทิ้ง) การแก้ไขที่แนะนําทีละรายการได้โดยใช้เมนูป็อปอัพที่ปรากฏเหนือการแก้ไขแต่ละรายการ คุณยังสามารถยอมรับหรือปฏิเสธการแก้ไขทั้งหมดพร้อมกันได้โดยใช้ปุ่ม "เก็บ " และ "เลิกทํา " ที่ด้านล่างของแท็บเครื่องมือแก้ไข (หรือมุมมอง Chat)
ทดสอบโค้ดที่สร้างขึ้นใหม่ของคุณเพื่อให้แน่ใจว่าทํางานโดยไม่มีข้อผิดพลาดและสร้างผลลัพธ์ที่คาดหวังไว้
ใช้เอเจนต์เพื่อปรับโครงสร้างโค้ด
คุณสามารถใช้เอเจนต์เมื่อคุณต้องการทําให้กระบวนการปรับโครงสร้างโค้ดเป็นแบบอัตโนมัติ ตัวแทนทําหน้าที่เป็นตัวแทนอิสระที่สามารถดําเนินการในนามของคุณได้ คุณสามารถขอให้ GitHub Copilot ทํางานเฉพาะ และจะสร้างโค้ดตามคําขอของคุณ
ด้วยเอเจนต์ คุณสามารถใช้ภาษาธรรมชาติเพื่อระบุงานระดับสูง และให้ GitHub Copilot ให้เหตุผลเกี่ยวกับคําขอ วางแผนงานที่จําเป็น และนําการเปลี่ยนแปลงไปใช้กับฐานรหัสของคุณโดยอัตโนมัติ เอเจนต์ใช้การแก้ไขโค้ดและการเรียกใช้เครื่องมือร่วมกันเพื่อทํางานที่คุณระบุให้สําเร็จ ขณะที่ประมวลผลคําขอของคุณ จะตรวจสอบผลลัพธ์ของการแก้ไขและเครื่องมือ และจะทําซ้ําเพื่อแก้ไขปัญหาใด ๆ ที่เกิดขึ้น
สําคัญ
เมื่อคุณใช้เอเจนต์ GitHub Copilot อาจส่งคําขอพรีเมียมหลายรายการเพื่อทํางานเดียวให้เสร็จสมบูรณ์ คําขอแบบพรีเมียมสามารถใช้ได้โดยข้อความแจ้งที่เริ่มต้นโดยผู้ใช้และการดําเนินการติดตามผล GitHub Copilot ดําเนินการในนามของคุณ คําขอพรีเมียมทั้งหมดที่ใช้ขึ้นอยู่กับความซับซ้อนของงาน จํานวนขั้นตอนที่เกี่ยวข้อง และแบบจําลองที่เลือก
เปิดมุมมอง แชท และเลือก ตัวแทน
สร้างพร้อมท์ที่อธิบายงานที่คุณต้องการให้ GitHub Copilot ดําเนินการ
สมมติว่าคุณมีโครงการโค้ดที่ใช้กระบวนการ/เทคนิคตั้งแต่สองแบบขึ้นไปเพื่อทํางานเดียวกันให้สําเร็จ คุณสามารถขอให้ GitHub Copilot ปรับโครงสร้างโค้ดของคุณใหม่โดยใช้วิธีเดียวเพื่อปรับปรุงความสอดคล้อง การบํารุงรักษา และประสิทธิภาพ
เช่น:
Review the LINQ code used in the JsonData and JsonLoanRepository classes. Refactor the methods in the JsonPatronRepository class using LINQ queries. Ensure that existing code functionality is maintained.เอเจนต์อาจเรียกใช้เครื่องมือหลายอย่างเพื่อทํางานต่างๆ ให้สําเร็จ อีกทางหนึ่งคือเลือกไอคอนเครื่องมือเพื่อกําหนดค่าว่าเครื่องมือใดที่สามารถใช้ในการตอบสนองต่อคําขอของคุณ
ยืนยันการเรียกใช้เครื่องมือและคําสั่งเทอร์มินัล
ก่อนที่ GitHub Copilot จะเรียกใช้คําสั่งเทอร์มินัลหรือเครื่องมือที่ไม่ได้มีอยู่ภายใน ระบบจะร้องขอการยืนยันเพื่อดําเนินการต่อ จําเป็นต้องมีการยืนยันเนื่องจากเครื่องมืออาจทํางานภายในเครื่องของคุณและดําเนินการปรับเปลี่ยนไฟล์หรือข้อมูล
GitHub Copilot ตรวจพบปัญหาและปัญหาในการแก้ไขโค้ดและคําสั่งเทอร์มินัล และจะทําซ้ําและดําเนินการเพื่อแก้ไข
สําคัญ
แม้ว่า GitHub Copilot จะสามารถรักษาตัวเองได้ แต่ก็อาจไม่สามารถแก้ไขปัญหาได้ด้วยตัวเองเสมอไป คุณสามารถหยุดกระบวนการชั่วคราวและให้บริบทเพิ่มเติมเพื่อช่วยให้ GitHub Copilot เข้าใจปัญหาได้ คุณยังสามารถยกเลิกกระบวนการและเริ่มต้นใหม่ด้วยพร้อมท์ใหม่
ตรวจทานการแก้ไขที่แนะนํา และยอมรับหรือละทิ้งการแก้ไขที่แนะนํา
ทดสอบโค้ด refactored ของคุณเพื่อให้แน่ใจว่าจะสร้างผลลัพธ์ที่คาดหวังไว้
เอเจนต์ควรแก้ไขปัญหาด้วยตัวเอง แต่คุณควรทดสอบโค้ดเพื่อให้แน่ใจว่าทํางานได้ตามที่คาดไว้
คุณสามารถย้อนกลับการแก้ไขที่ทําโดยตัวแทนได้โดยใช้ปุ่ม เลิกทํา ในมุมมองแชท คุณยังสามารถใช้ตัวเลือก "แปลงกลับ " ในตัวแก้ไขเพื่อย้อนกลับการเปลี่ยนแปลงที่ทําโดยตัวแทน
เมื่อใดควรเลือกตัวแทนมากกว่าแผน
พิจารณาเกณฑ์ต่อไปนี้เพื่อเลือกระหว่างแผนและตัวแทน:
- การวางแผน: วางแผนสร้างแผนการใช้งานทีละขั้นตอนที่มีโครงสร้างก่อนที่จะเขียนโค้ดใดๆ เอเจนต์จะกําหนดบริบทและไฟล์ที่เกี่ยวข้องเพื่อแก้ไขโดยอัตโนมัติ และเริ่มทําการเปลี่ยนแปลงโดยตรง
- ความซับซ้อนของงาน: เอเจนต์เหมาะกว่าสําหรับงานที่ซับซ้อนซึ่งต้องมีทั้งการแก้ไขโค้ดและการเรียกใช้เครื่องมือหรือคําสั่งเทอร์มินัล
- ระยะเวลา: ตัวแทนใช้หลายขั้นตอนในการประมวลผลคําขอ ดังนั้นจึงอาจใช้เวลานานกว่าในการสร้างการตอบกลับ ตัวอย่างเช่น เพื่อกําหนดบริบทและไฟล์ที่เกี่ยวข้องเพื่อแก้ไข กําหนดแผนการดําเนินการ และอื่น ๆ
- การรักษาตัวเอง: เอเจนต์จะประเมินผลลัพธ์ของการแก้ไขที่สร้างขึ้นและอาจทําซ้ําหลายครั้งเพื่อแก้ไขปัญหาระดับกลาง
- ขอโควต้า: เมื่อคุณใช้โหมดตัวแทน ขึ้นอยู่กับความซับซ้อนของงาน ข้อความแจ้งหนึ่งครั้งอาจส่งผลให้มีคําขอจํานวนมากไปยังแบ็กเอนด์
สรุป
GitHub Copilot สามารถใช้เพื่อปรับโครงสร้างโค้ดในฐานรหัสของคุณได้ คุณสามารถใช้เอเจนต์มุมมอง Chat เพื่อวิเคราะห์ วางแผน และใช้งานการปรับโครงสร้างโค้ดได้ มุมมองแชทประกอบด้วยตัวแทนในตัวสามตัว: ถาม วางแผน และตัวแทน คุณสามารถใช้ถามเพื่อถามคําถามเกี่ยวกับฐานรหัสหรือแนวคิดด้านเทคโนโลยีของคุณ คุณสามารถใช้ วางแผน เพื่อสร้างแผนการใช้งานที่มีโครงสร้างก่อนที่จะเขียนโค้ด คุณสามารถใช้ตัวแทนเพื่อเริ่มเวิร์กโฟลว์การเข้ารหัสตัวแทน