Получите максимум от GitHub Copilot

Когда GitHub Copilot был выпущен, я сразу же попробовал его. Заявления казались слишком хорошими, чтобы быть правдой.
Я обнаружил обратное — это было лучше , чем рекламировалось. Я был так потрясен этим, что… даже не написал об этом в твиттере. Я думал, что это слишком большое преимущество, чтобы раздавать его бесплатно!
Я обнаружил, что Copilot настолько эффективен, что, когда у нас было командное совещание в 2021 году, я посвятил Copilot целый раздел своей презентации технического директора. Использование Copilot стало настолько же близким к «обязательному», как и любой другой инструмент в Infinite Red. Это сильно изменило правила игры.
Что Copilot делает для моего рабочего процесса кодирования
Я довольно быстро кодирую в обычных обстоятельствах; Второй пилот удваивает мою скорость.
У меня легкий СДВГ, и одна из моих самых больших проблем — оставаться сосредоточенным. Как только я попадаю в «состояние потока», меня уже не остановить. Я не думаю, что я один борюсь с этим, но даже если вы этого не сделаете, у вас все равно могут быть моменты, когда вы как бы «теряете нить» и нуждаетесь в подсказке.
Я обнаружил, что мой идеальный процесс кодирования всегда включает в себя работу в паре. Хорошая пара держит меня сосредоточенным, предугадывает, что нужно сделать дальше, предлагает предложения и терпеливо относится ко мне. Теперь второй пилот выполняет эту роль автоматически. Я напишу какой-нибудь код, наткнусь на определенный момент, когда мой мозг пытается переключиться на какую-то другую тему, но этой небольшой паузы достаточно, чтобы второй пилот выскочил с предложением, тем самым снова сфокусировав мое внимание.
Ограничения второго пилота
Распространенной ошибкой является получение плохих результатов от Copilot и обвинение инструмента. В большинстве случаев Copilot не пишет ваш код именно так, как вам нужно. Он делает все возможное, основываясь на контексте, подсказках и количестве обучающих данных, к которым у него есть доступ. И, как и любой инструмент, вам нужно научиться использовать его, чтобы получить от него максимальную пользу.
Давайте поговорим о том, как получить максимальную отдачу от Copilot.
Написание ведущих комментариев для контекста
Контекст важен как для парного программиста, так и для помощника по кодированию ИИ. Начните с написания четкого комментария, который на простом английском дает хорошее представление о том, для чего предназначена функция, какие аргументы она должна принимать и что она должна возвращать. Если ваш комментарий расплывчатый, ожидайте расплывчатых результатов:

Лучший комментарий даст второму пилоту больше информации:

Не стесняйтесь вернуться и изменить свой комментарий, пока не получите желаемые результаты. Вы, конечно, можете отредактировать код вручную, но если вы научитесь писать описательные комментарии, он будет лучше работать и с будущим кодом.

В этом случае добавление «Типированной функции» вводило типы в аргументы функции.
Эти комментарии не обязательно предназначены для людей, читающих код, хотя они читаются как есть. Я всегда возвращаюсь и настраиваю их для чтения людьми после того, как закончу.
Изучите сочетания клавиш
Если вы используете VS Code, вы можете найти список сочетаний клавиш здесь .
- Примите встроенное предложение:
Tab
- Отклонить встроенное предложение:
Esc
- Показать следующее встроенное предложение:
Option (⌥)+]
- Показать предыдущее встроенное предложение:
Option (⌥)+[
- Активировать встроенное предложение:
Option (⌥)+\
- Откройте второй пилот GitHub:
Ctrl+Return
Те, которые я использую чаще всего, кроме Tab
/ Esc
, это Option+[
и ]
. Это позволяет мне переключаться между предложениями, пока не будет найдено самое полезное.
Дайте Copilot структуру для работы
Иногда Copilot встраивает то, что вы действительно хотите извлечь, во вспомогательную функцию. Полностью удалите сгенерированную функцию, сначала создайте вспомогательную функцию, и Copilot обычно уловит ее и будет использовать в дальнейшем.

Это относится и к другим вещам, таким как жестко закодированные постоянные значения. Добавьте хорошо названные переменные прямо над сгенерированным кодом, и Copilot интегрирует их.

Второй пилот может помочь с командами CLI
Если вы похожи на меня и не можете вспомнить многие команды git, Copilot может помочь и с ними.
В пустой вкладке напишите что-то вроде этого:

Это не идеально, но даст вам достаточно подсказок, которые помогут вам приблизиться!
Второй пилот отлично справляется с повторяющимися задачами, такими как написание тестов.
Один из самых потрясающих моментов на стриме был, когда Copilot написал точные тесты для довольно сложной функции, которую я разрабатывал. Взгляните (отметка времени 2:23:00):

Второй пилот тоже может писать комментарии для вас!
Хотя написание комментариев может помочь Copilot с кодом, написание кода также может помочь Copilot с комментариями!
Если у вас есть существующий код и вам нужно его задокументировать, Copilot часто будет иметь некоторое представление о том, что это такое.

Copilot может объяснить вам код (через Copilot Labs)
Если вы установили расширение Copilot Labs, вы можете открыть его на боковой панели, выделить блок текста, и Copilot сделает все возможное, чтобы объяснить его вам на простом английском языке.

Я не нашел это столь же полезным, так как я могу бегло читать код, но это может быть полезно, если какой-то код особенно загадочен.
Copilot может помочь вам выучить новый язык программирования
Когда я создавал react -native-colo-loco , мне пришлось написать скрипт Gradle, написанный на Groovy. Я немного знаю Groovy, но немного. Поэтому я сосредоточился на написании точных, точных комментариев и позволил второму пилоту предлагать строки кода. Затем я мог бы опираться на свой опыт разработки, чтобы подобрать шаблоны и синтаксис и двигаться дальше.
Вы можете увидеть результаты здесь (я оставил почти все комментарии второго пилота, чтобы показать, какими они были).
Если код второго пилота далёк от совершенства, просто продолжайте строить
Второй пилот любит контекст. Чем больше вы строите, тем больше у него контекста и тем полезнее он становится. Когда я решил перестроить часть MobX-State-Tree , Copilot был невероятно полезен, потому что он мог исследовать остальную часть кодовой базы. (Рефакторинг так и не был выпущен, но это было отличным упражнением в обучении.)
Пока еще рано, но я настроен оптимистично в отношении GitHub Copilot. Если у вас есть другие советы, дайте мне знать в Твиттере !
Благодарности:
- Спасибо Ризель Скарлетт за ее выступление о втором пилоте (также стоит посмотреть!):https://www.youtube.com/watch?v=CuQSoHbOpTQ
- Спасибо Марии Прокопец за прекрасную статью о втором пилоте (вам тоже стоит это прочитать!):https://nira.com/github-copilot/
- Спасибо Дженне Фуччи за потрясающую графику в верхней части этой статьи!