รับประโยชน์สูงสุดจาก GitHub Copilot
![](https://post.nghiatu.com/assets/images/m/max/724/1*I3JtGwInFQ-ekKna3LLFoQ.jpeg)
เมื่อGitHub Copilotเปิดตัว ฉันลองใช้ทันที การอ้างสิทธิ์ดูเหมือนจะดีเกินจริง
สิ่งที่ฉันพบตรงกันข้าม – มันดีกว่าโฆษณา ฉันทึ่งกับมันมากจนฉัน... ไม่แม้แต่จะทวีตถึงมัน ฉันคิดว่ามันเป็นข้อได้เปรียบที่ยิ่งใหญ่เกินไปที่จะแจกฟรี!
ฉันพบว่า Copilot สามารถสร้างผลกระทบได้มากถึงขนาดที่เมื่อเราเลิกจ้างทีมในปี 2021 ฉันได้ทุ่มเทส่วนทั้งหมดเกี่ยวกับการนำเสนอ CTO ของฉันให้กับ Copilot การใช้ Copilot มีความใกล้เคียงกับ "จำเป็น" มากพอๆ กับเครื่องมือใดๆ ที่ Infinite Red มันเป็นตัวเปลี่ยนเกมครั้งใหญ่
Copilot ทำอะไรกับขั้นตอนการเข้ารหัสของฉัน
ฉันเขียนโค้ดค่อนข้างเร็วในสถานการณ์ปกติ Copilot เพิ่มความเร็วของฉันเป็นสองเท่า
ฉันเป็นโรคสมาธิสั้นเล็กน้อย และปัญหาที่ยิ่งใหญ่ที่สุดอย่างหนึ่งของฉันคือการมีสมาธิจดจ่อ เมื่อฉันเข้าสู่ "สถานะการไหล" ฉันจะผ่านพ้นไม่ได้ ฉันไม่คิดว่าฉันอยู่คนเดียวที่ต้องดิ้นรนกับสิ่งนี้ แต่ถึงคุณไม่ทำ คุณก็ยังอาจมีช่วงเวลาที่คุณรู้สึก “เสียด้าย” และต้องการการกระตุ้นเตือน
ฉันพบว่าขั้นตอนการเขียนโค้ดในอุดมคติของฉันเกี่ยวข้องกับการจับคู่เสมอ คู่ที่ดีช่วยให้ฉันมีสมาธิ คาดการณ์สิ่งที่จำเป็นต่อไป ให้คำแนะนำ และอดทนกับฉัน Copilot ทำหน้าที่นั้นทันทีโดยอัตโนมัติ ฉันจะเขียนโค้ด ถึงจุดหนึ่งที่สมองของฉันพยายามจะข้ามไปยังเรื่องอื่น แต่การหยุดชั่วคราวเพียงเล็กน้อยก็เพียงพอแล้วที่ Copilot จะผุดขึ้นมาพร้อมคำแนะนำ ซึ่งทำให้ฉันกลับมาสนใจอีกครั้ง
ข้อจำกัดของ Copilot
ข้อผิดพลาดทั่วไปคือการได้รับผลลัพธ์ที่ไม่ดีจาก Copilot และตำหนิเครื่องมือ Copilot ไม่ได้เขียนโค้ดให้คุณตามที่คุณต้องการในกรณีส่วนใหญ่ มันทำได้ดีที่สุดตามบริบท คำใบ้ และจำนวนข้อมูลการฝึกอบรมที่เข้าถึงได้ และเช่นเดียวกับเครื่องมืออื่นๆ คุณต้องเรียนรู้วิธีใช้งานเพื่อให้ได้ประโยชน์สูงสุดจากเครื่องมือนั้น
เรามาพูดถึงวิธีการใช้ประโยชน์สูงสุดจาก Copilot
การเขียนความคิดเห็นชั้นนำสำหรับบริบท
บริบทเป็นสิ่งสำคัญ ทั้งสำหรับโปรแกรมเมอร์คู่และผู้ช่วยเขียนโค้ด AI เริ่มต้นด้วยการเขียนความคิดเห็นที่ชัดเจนซึ่งให้แนวคิดที่ดีในภาษาอังกฤษแบบธรรมดาว่าฟังก์ชันมีไว้เพื่ออะไร ข้อโต้แย้งที่ควรได้รับ สิ่งที่ควรส่งคืน หากความคิดเห็นของคุณคลุมเครือ ให้คาดหวังผลลัพธ์ที่คลุมเครือ:
![](https://post.nghiatu.com/assets/images/m/max/724/1*TI7wtSQyZhnzlphVqgjyhg@2x.png)
ความคิดเห็นที่ดีกว่าจะให้ข้อมูลที่ดีขึ้นแก่ Copilot:
![](https://post.nghiatu.com/assets/images/m/max/724/1*C6VFGwn3oimzQ7Da8Nclvg@2x.png)
อย่าลังเลที่จะกลับไปปรับแต่งความคิดเห็นของคุณจนกว่าจะได้ผลลัพธ์ที่คุณต้องการ แน่นอนว่าคุณสามารถแก้ไขโค้ดด้วยมือได้ แต่ถ้าคุณเขียนความคิดเห็นเชิงบรรยายได้ดี ก็จะทำงานได้ดีขึ้นด้วยโค้ดในอนาคตเช่นกัน
![](https://post.nghiatu.com/assets/images/m/max/724/1*5MJGhqiRQKpOCsQGKuFODw@2x.png)
ในกรณีนี้ การเพิ่ม "ฟังก์ชันที่พิมพ์" จะแนะนำประเภทให้กับอาร์กิวเมนต์ของฟังก์ชัน
ความคิดเห็นเหล่านี้ไม่จำเป็นสำหรับผู้อ่านโค้ดที่เป็นมนุษย์ แม้ว่าจะสามารถอ่านได้ตามที่เป็นอยู่ ฉันมักจะกลับไปปรับแต่งให้เหมาะกับผู้อ่านเสมอหลังจากที่ฉันทำเสร็จแล้ว
เรียนรู้แป้นพิมพ์ลัด
หากคุณใช้ VS Code คุณสามารถดูรายการทางลัดได้ ที่นี่
- ยอมรับคำแนะนำแบบอินไลน์:
Tab
- ปิดคำแนะนำแบบอินไลน์:
Esc
- แสดงคำแนะนำแบบอินไลน์ถัดไป:
Option (⌥)+]
- แสดงคำแนะนำแบบอินไลน์ก่อนหน้า:
Option (⌥)+[
- ทริกเกอร์คำแนะนำแบบอินไลน์:
Option (⌥)+\
- เปิด GitHub Copilot:
Ctrl+Return
สิ่งที่ฉันใช้บ่อย ที่สุดนอกเหนือจากTab
/ Esc
คือOption+[
และ ]
วิธีนี้ช่วยให้ฉันหมุนเวียนคำแนะนำจนกว่าจะได้คำแนะนำที่มีประโยชน์ที่สุด
ให้โครงสร้าง Copilot ทำงานด้วย
บางครั้ง Copilot จะอินไลน์สิ่งที่คุณต้องการแยกออกเป็นฟังก์ชันตัวช่วย ลบฟังก์ชันที่สร้างขึ้นทั้งหมด สร้างฟังก์ชันตัวช่วยก่อน และโดยปกติ Copilot จะรับมันและใช้มันต่อไป
![](https://post.nghiatu.com/assets/images/m/max/724/1*3gmWKsBtlfstKj-z1O0ivg@2x.png)
สิ่งนี้ใช้กับสิ่งอื่นเช่นค่าคงที่แบบฮาร์ดโค้ด เพิ่มตัวแปรที่มีชื่อถูกต้องเหนือรหัสที่สร้างขึ้นและ Copilot จะรวมเข้าด้วยกัน
![](https://post.nghiatu.com/assets/images/m/max/724/1*P8ehE3o7eNdH1kyV32vreA@2x.png)
Copilot สามารถช่วยด้วยคำสั่ง CLI
หากคุณเป็นเหมือนฉันและจำคำสั่งคอมไพล์ไม่ได้ Copilot ก็สามารถช่วยได้เช่นกัน
ในแท็บว่าง ให้เขียนดังนี้:
![](https://post.nghiatu.com/assets/images/m/max/724/1*9Ax5YvlZJK-ru6ZwbyomdQ@2x.png)
มันไม่สมบูรณ์แบบ แต่มันจะให้เบาะแสที่เพียงพอแก่คุณ!
Copilot เก่งในงานซ้ำๆ เช่น การทดสอบการเขียน
หนึ่งในช่วงเวลาที่เหลือเชื่อที่สุดของฉันในการสตรีมคือตอนที่ Copilot เขียนการทดสอบที่แม่นยำสำหรับฟีเจอร์ที่ค่อนข้างซับซ้อนที่ฉันกำลังสร้าง ลองดู (เวลาประทับ 2:23:00):
![](https://post.nghiatu.com/assets/images/m/max/724/1*B81lk7m31d_toMYryZFPqA@2x.png)
Copilot สามารถเขียนความคิดเห็นให้คุณได้เช่นกัน!
ในขณะที่การเขียนความคิดเห็นสามารถช่วย Copilot ในการเขียนโค้ดได้ การเขียนโค้ดก็สามารถช่วย Copilot ในการแสดงความคิดเห็นได้เช่นกัน!
หากคุณมีรหัสอยู่แล้วและจำเป็นต้องจัดทำเอกสาร Copilot มักจะเข้าใจว่ามันคืออะไร
![](https://post.nghiatu.com/assets/images/m/max/724/1*HCU1VueiRpcITiSeMcFQqA@2x.png)
Copilot สามารถอธิบายโค้ดให้คุณได้ (ผ่าน Copilot Labs)
หากคุณติดตั้งส่วนขยาย Copilot Labs คุณสามารถเปิดส่วนขยายดังกล่าวในแผงด้านข้าง ไฮไลต์กลุ่มข้อความ จากนั้น Copilot จะพยายามอย่างเต็มที่เพื่ออธิบายให้คุณฟังเป็นภาษาอังกฤษล้วน
![](https://post.nghiatu.com/assets/images/m/max/724/1*bD2Vb-8WnQ9HPx3FdyrHDQ@2x.png)
ฉันไม่พบว่าสิ่งนี้มีประโยชน์มากนักเนื่องจากฉันสามารถอ่านโค้ดได้อย่างคล่องแคล่ว แต่อาจมีประโยชน์หากโค้ดบางอย่างเป็นความลับโดยเฉพาะ
Copilot สามารถช่วยให้คุณเรียนรู้ภาษาเขียนโค้ดใหม่ได้
เมื่อฉันสร้างreact-native-colo-locoฉันต้องเขียนสคริปต์ Gradle ซึ่งเขียนด้วยภาษา Groovy ฉันรู้จักGroovyอยู่บ้าง แต่ไม่มากนัก ดังนั้นฉันจึงมุ่งเน้นไปที่การเขียนความคิดเห็นที่ถูกต้องแม่นยำ และให้ Copilot แนะนำบรรทัดของโค้ด จากนั้นฉันก็สามารถพึ่งพาประสบการณ์การพัฒนาของฉันเพื่อเลือกรูปแบบและไวยากรณ์ แล้วไปจากตรงนั้น
คุณสามารถดูผลลัพธ์ได้ที่นี่ (ฉันทิ้งความคิดเห็นชั้นนำของ Copilot ไว้เกือบทั้งหมดเพื่อแสดงให้เห็นว่าพวกเขาเป็นอย่างไร)
หากรหัสของ Copilot นั้นไม่ชัดเจน ให้สร้างต่อไป
Copilot ชอบบริบท ยิ่งคุณสร้างมากเท่าไหร่ก็ยิ่งมีบริบทมากขึ้นเท่านั้น และยิ่งมีประโยชน์มากขึ้นเท่านั้น เมื่อฉันตัดสินใจสร้างMobX-State-Treeขึ้นมาใหม่ Copilot มีประโยชน์อย่างเหลือเชื่อ เพราะมันสามารถตรวจสอบฐานรหัสที่เหลือได้ (รีแฟกเตอร์ไม่เคยจัดส่ง แต่มันเป็นแบบฝึกหัดที่ดีในการเรียนรู้)
ยังคงเป็นวันแรก แต่ฉันค่อนข้างรั้นกับ GitHub Copilot หากคุณมีเคล็ดลับอื่นๆ โปรดแจ้งให้เราทราบทาง Twitter !
กิตติกรรมประกาศ:
- ขอขอบคุณ Rizèl Scarlett สำหรับการพูดคุยของเธอเกี่ยวกับ Copilot ที่นี่ (ควรค่าแก่การชมด้วย!):https://www.youtube.com/watch?v=CuQSoHbOpTQ
- ขอบคุณ Marie Prokopets สำหรับบทความดีๆ ของเธอเกี่ยวกับ Copilot (คุณควรอ่านบทความนี้ด้วย!):https://nira.com/github-copilot/
- ขอบคุณJenna Fucciสำหรับกราฟิกที่ยอดเยี่ยมที่ด้านบนของบทความนี้!