Kitobdan iqtiboslar Вайб-кодер от нуля до мастера в эпоху AImuallif Михаил Тарасов
Валидируй данные на входе. Прежде чем работать с данными, пришедшими извне (от пользователя, из API), убедись, что они того типа, который ты ожидаешь
Твоя новая работа — быть параноиком. Быть тем самым душным тимлидом для своего AI-стажёра. Прежде чем писать промпт, задай себе вопросы:
— А что, если данные придут пустые?
— А что, если придёт не тот тип данных (не массив, а объект)?
— А что, если сеть упадёт?
— А что, если сервер вернёт ошибку?
Думать о пограничных случаях, об ошибках, об архитектуре — вот твоя настоящая работа
вайб-кодер не просто чинит, он учится, чтобы не повторять ошибок. Проблема была не только в AI. Проблема была в нашем промпте. Он был слишком наивным.
Промпт уровня «Джуниор»:
// Напиши функцию, которая получает имена пользователей с API.
Промпт уровня «Миддл»:
// Напиши асинхронную функцию getUsersNames, которая делает GET-запрос на «…', получает массив пользователей и возвращает новый массив только с их именами. (Это то, что мы написали).
А вот как выглядит промпт уровня «Сеньор»:
// Напиши асинхронную функцию getUsersNames, которая делает GET-запрос на «…'. Функция должна быть надёжной. Добавь обработку сетевых ошибок с помощью try...catch. Если ответ сервера не успешный (статус не 200—299), функция должна выбрасывать ошибку с текстом статуса. Если в ответе пришёл пустой массив или вообще не массив, функция должна возвращать пустой массив, не падая. В случае любой другой ошибки, она также должна возвращать пустой массив и логировать ошибку в консоль.
Чувствуешь разницу? Сеньорский промпт не просто говорит, что делать. Он предвидит проблемы и говорит, как на них реагировать. Он описывает не только «happy path», но и все «sad paths
отать не будет.
— editor. quickSuggestions: Эта настройка контролирует появление стандартного окошка с подсказками. Важно, чтобы оно не конфликтовало с Copilot. Настройки «on» для строк и комментов позволяют Copilot лучше «понимать» контекст, когда ты начинаешь писать.
Шаг 4. Хоткеи: приручаем зверя окончательно
Инструмент бесполезен, если ты не умеешь им пользоваться быстро. Заучи эти хоткеи, как git push. Это твоя новая мышечная память.
— Tab — Принять предложение. Твой лучший друг.
— Esc — Отклонить предложение. Твой второй лучший друг.
— Alt +] (или Option +] на Mac) — Показать следующее предложение.
— Alt + [(или Option + [на Mac) — Показать предыдущее предложение. (Многие не знают об этой фиче, а она — золото!)
— Ctrl + Enter — Открыть панель с 10 вариантами кода от Copilot. Полезно, когда первая предложенная идея — мусор.
— Ctrl + I — Открыть встроенный чат Copilot. Выдели кусок кода, нажми Ctrl+I и напиши «Refactor this» или «Explain this code». Это киллер-фича.
Вот и всё, братан. Твой классический, кастомный, но заряженный AI сетап готов. Ты получил мощь нейронки, но оставил за собой полный контроль. Ты сам решаешь, когда нажать на газ, а когда — притормозить и подумать своей головой. Это путь воина, который доверяет своему мечу, но полагается на собственное мастерство.
Совет от гаражного кодера:
— Поставь Prettier и ESLint. AI часто генерит код с кривым форматированием или не по стайлгайду проекта. Эти два плагина — твои автоматические «чистильщики». Они будут форматировать код (включая сгенерированный) при сохранении. Так в репозитории будет порядок.
— Создай файл. copilotignore. Да, такой существует! По аналогии с. gitignore. Создай его в корне проекта и пропиши пути к файлам или папкам, которые Copilot должен игнорировать полностью. Это более тонкий контроль, чем settings. json, и он работает на уровне проекта. Например, туда можно добавить файлы с секретами или ключами API (.env, secrets. js).
Шаг 3. Тонкая настройка: пилим settings. json, чтобы Copilot не бесил
Мы не хотим, чтобы турбина работала на полную мощность, когда мы паркуемся. Нам нужен контроль. Открываем настройки в формате JSON. Это наш «мозг» IDE.
— Нажми Ctrl+,, чтобы открыть настройки.
— В правом верхнем углу есть иконка файла с загнутым уголком. Наведи на неё, появится подсказка «Open Settings (JSON)». Жми.
Перед тобой файл settings. json. Всё, что мы сюда напишем, переопределит дефолтные настройки. Вот готовый конфиг, который я использую сам. Копируй и вставляй. Ниже я разложу по полочкам, что каждая строчка делает.
{
// — - Общие настройки для комфортной работы — —
"editor.fontSize»: 14,
"editor.fontFamily»: ««Fira Code’, «JetBrains Mono’, «Consolas’, ’monospace’»,
"editor.fontLigatures»: true,
"workbench.colorTheme»: «Default Dark+», // или любая твоя любимая тема
"files.autoSave»: «onFocusChange»,
// — - Начинается магия для COPILOT — —
// 1. Главный рубильник. Иногда хочется подумать в тишине.
"github.copilot. enable»: {
«*»: true, // Включаем для всех языков по умолчанию
«plaintext»: false, // Выключаем для обычных текстовых файлов
«markdown»: false, // Выключаем для Markdown, чтобы не мешал писать доки
«json»: true // Для JSON пусть работает, помогает со скобками
},
// 2. Убираем мусор из поля зрения AI.
// Copilot учится на открытых файлах. Не давай ему учиться на мусоре.
«files. exclude»: {
"**/.git»: true,
"**/.svn»: true,
«**/.hg»: true,
«**/CVS»: true,
«**/.DS_Store»: true,
«**/Thumbs. db»: true,
«**/node_modules»: true, // Самое важное!
«**/bower_components»: true,
«**/dist»: true,
«**/build»: true
},
«search. exclude»: {
«**/node_modules»: true,
«**/bower_components»: true,
"**/*.code-search»: true
},
// 3. Отключаем встроенные подсказки VS Code, чтобы не конфликтовали с Copilot.
// Пусть будет один главный по подсказкам.
"editor.inlineSuggest. enabled»: true,
// 4. Тюним автодополнение, чтобы было удобно.
// По умолчанию он может предлагать код, когда ты этого не ждешь.
// Эта настройка (увы, пока нет прямого конфига) решается привычкой жать Esc.
// Но мы можем настроить, когда автокомплит появляется сам:
«editor. quickSuggestions»: {
«other»: «on»,
«comments»: «on»,
«strings»: «on»
},
// 5. Горячая клавиша для чата Copilot. `Ctrl+I` по умолчанию — топ.
// Можно переназначить, если мешает.
// «keybindings. json»
}
Разбор полётов по конфигу:
— github.copilot. enable: Это твой главный тумблер. Ты можешь точечно отключать Copilot для определённых типов файлов. Я всегда вырубаю его для markdown, потому что когда я пишу документацию или эту книгу, последнее, что мне нужно, — это предложения сгенерить for loop.
— files. exclude и search. exclude: Критически важные настройки! Папка node_modules — это чёрная дыра, в которой лежат миллионы файлов. Если AI начнёт их анализировать, твоя IDE превратится в черепаху. Этим конфигом мы говорим: «Братан, вот сюда не смотри, там ничего интересного».
— editor.inlineSuggest. enabled: Убедись, что эта опция включена, и
