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

Правило доверия

что проверяем всегда, а что по обстоятельствам

Что это

Проверять каждую строку невозможно — так работа встанет. Не проверять ничего нельзя — так проект перестанет быть твоим. Нужен уровень между, и он задаётся правилом.

Всегда проверяется одно и то же, независимо от задачи. Остальное — по цене ошибки (статья 1.5).

Четыре проверки, которые делаются всегда

Они занимают пару минут и ловят большую часть проблем.

1. Запуск

Банально, но пропускают. Код, который не запускали, не работает — это не пессимизм, а статистика. Причём запускать надо тот случай, ради которого всё затевалось, а не любой.

2. Дифф

Посмотреть, что изменилось, а не что получилось (статья 2.13). Начинать со --stat: сколько файлов, сколько строк. Несовпадение с ожиданием — повод остановиться.

git diff --stat

3. Неудачный случай

Хотя бы один: пустые данные, недоступная сеть, мусор на входе. Там живут ошибки, которых запуск не находит, потому что запускают обычно удачный путь.

4. Вопрос «что это делает»

Если не можешь объяснить принятый код в двух предложениях — он ещё не твой (статья 1.2). Объяснить можно и себе, и вслух, и в комментарии к коммиту.

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

Три из четырёх проверок ИИ может подготовить сам:

Запрос
Назови три случая, которые стоит проверить руками,
чтобы убедиться, что эта правка работает.
Хотя бы один — неудачный.
Запрос
Объясни в двух предложениях, что делает код,
который ты сейчас добавил.

Четвёртая — дифф — только твоя: это и есть работа ревьюера.

Что проверяется дополнительно

Сверх обязательных четырёх уровень проверки задаётся задачей.

Признак задачиЧто добавить
Трогает данные пользователейпрогон на копии, способ отката
Необратимоплан заранее (3.10), мини-ТЗ (3.15)
Ошибка будет незаметнойтесты (4.6), логи на ключевых местах
Редкая библиотекасверка с документацией (4.8)
Больше одного файлачтение диффа построчно
Правится давно работавший кодтест до правки, чтобы зафиксировать поведение

Последняя строка — самый недооценённый приём. Тест, написанный до правки, показывает, что работало раньше, и сразу скажет, если это сломалось.

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

Проверка свелась к запуску. Самая частая форма самообмана: запустил, ответ верный, принял. Проверен один сценарий из десяти (статья 1.6).

Диффа никто не видел. Если правку принимают по тексту ответа ИИ, а не по диффу, — роль ревьюера вакантна.

Уровень проверки выбран по ощущению. «Тут вроде просто» — не критерий. Критерий — обратимость и заметность.

Проверка отложена до конца. Пять правок подряд, потом проверка всего разом — и теперь непонятно, какая из пяти сломала. Проверяй после каждой.

Шпаргалка

  • Всегда: запуск · дифф · неудачный случай · «что это делает».

  • Четыре проверки занимают две минуты и не зависят от размера правки.

  • Сверх того — по цене ошибки: обратимость и заметность.

  • Правишь давно работавший код — сначала тест на то, как он работал.

  • Проверяй после каждой правки, а не после пяти.