Программирование с ИИ
ENRU
3.4

Шаблон — новая функция

самый частый запрос в работе

Что это

Новая функциональность — то, что просят у ИИ чаще всего. У этого запроса есть устойчивая форма: назвать место, описать поведение, очертить границы, задать проверку.

Шаблон ниже — не форма для заполнения, а напоминание. Со временем он проговаривается сам, но первое время в него полезно заглядывать.

Как выглядит в коде

Шаблон

Запрос
Где: <файл или модуль; как устроено рядом>
Что: <поведение — что на входе, что на выходе>
Границы: <чего не делать; что не трогать>
Готово, когда: <проверяемое условие>

Плохо

Не так
Нужна функция для работы с подписками пользователей

«Работа с подписками» — это и добавить, и удалить, и проверить, и список показать. ИИ выберет сам, и скорее всего напишет класс на двести строк со всеми четырьмя операциями, половина из которых не нужна.

Хорошо

Лучше
Где: storage.py, рядом с load_subs(). Данные в SQLite,
подключение через get_conn() из db.py.

Что: функция add_sub(user_id: int, city: str) -> bool.
Добавляет подписку. Возвращает False, если такая подписка
уже есть, True если добавили.

Границы: только эта функция, остальные не трогай.
Новых зависимостей не добавляй.

Готово, когда: повторный вызов с теми же аргументами
возвращает False и второй строки в таблице не появляется.

Результат предсказуем: одна функция, понятная сигнатура, проверяемое поведение.

Как сказать ИИ

Что обязательно

Сигнатура. Имя, аргументы с типами, что возвращает. Это самая дешёвая подробность и самая полезная: она отсекает половину разночтений. Не знаешь, как назвать, — опиши словами, ИИ предложит.

Поведение в неудачном случае. Что делать, если данных нет, сеть отвалилась, аргумент пустой. Не скажешь — ИИ выберет сам, и чаще всего выберет молча вернуть None.

Границы. Фраза «остальные функции не трогай» экономит больше всего времени. Без неё ИИ охотно «заодно улучшит» соседний код, и дифф разрастается с десяти строк до двухсот.

Что необязательно

Не надо расписывать алгоритм, если он очевиден, — это работа ИИ. Не надо просить комментарии в каждой строке: они замусоривают код и устаревают первыми.

Когда функций несколько

Не проси пять функций одним запросом. Попроси первую, прочитай, прими — и дальше остальные одной фразой «сделай так же для delete_sub и list_subs». ИИ подхватит стиль уже принятого кода, и проверять будет проще.

На что смотреть

Функция делает больше, чем просили. Признак: внутри появились логирование, кеш, повторные попытки, валидация, о которых речи не было. Само по себе не вредно, но это код, который ты не заказывал и не проверял.

Молчаливая обработка ошибок. return None вместо исключения, except: pass, значения по умолчанию там, где должна быть ошибка. Код не падает и поэтому кажется рабочим — а потом приходится искать, откуда взялся None.

Сигнатура удобна ИИ, а не тебе. Семь аргументов, из них пять необязательных, словарь вместо явных параметров. Если вызов читается плохо — переделай сразу.

Функция не вписана в проект. Своё подключение к базе вместо get_conn(), свой формат логов, свой стиль именования. Чаще всего это причина 2 из статьи 3.1: ИИ просто не видел, как устроено рядом.

Шпаргалка

  • Четыре строки: где · что · границы · готово, когда.

  • Сигнатура — самая дешёвая и самая полезная подробность.

  • Всегда говори, что делать в неудачном случае.

  • «Остальное не трогай» экономит больше всего времени.

  • Несколько функций — по одной, потом «сделай так же».

  • Проверь: не делает ли функция больше, чем просили.