ISO‑обогащённые требования к коду.
Что это за метод?
Проблема: однострочные пожелания вроде «напиши чистый код» дают разный результат, потому что модель сама интерпретирует слово *чистый*. Решение: **разбить запрос на три чётких блока** – название качества, его смысл для конкретной задачи, набор правил и измеримые критерии приёмки. > **Ключевой вывод:** детализированные требования уменьшают разброс результатов и делают код более «читаемым» и «поддерживаемым», но не гарантируют корректность логики.
Как это работает
1. **Определяем качество** (напр., *производительность*, *безопасность*, *поддерживаемость*). 2. **Пишем смысл** – 1‑2 предложения, объясняющие, что именно важно в контексте задачи. 3. **Составляем правила** – 2–4 конкретных требования (императивные инструкции). 4. **Формируем критерии приёмки** – измеримые показатели, которые можно проверить статическим анализатором или простыми тестами. Модель получает один промпт с этими четырьмя пунктами и задачей; она «не гадит», а выполняет список условий.
Шаблон промпта (копировать‑вставить)
{твоя задача на код} Дополнительно — требование к качеству кода: Качество: {название качества} Смысл: {что это значит для этой задачи, 1–2 предложения} Правила: - {правило 1} - {правило 2} - {при необходимости правило 3} Критерии приёмки: - {измеримый критерий 1} - {измеримый критерий 2} ``` *Пример*:
Напиши функцию на Python, которая читает orders.csv (дата, клиент, товар, сумма) и выводит сводку продаж по товарам за месяц. Качество: поддерживаемость Смысл: код должен быть легко читаемым для фрилансера, который впервые его увидит. Правила: - Разбей логику на отдельные функции с одной задачей каждая. - Не делай вложенность условий и циклов более 2 уровней. - Используй понятные имена переменных, а не x, tmp, data1. Критерии приёмки: - Каждая функция помещается на экран без скролла. - Нет повторяющихся блоков кода (copy‑paste). - У каждой функции есть короткий докстринг, что она делает. ```
Практический кейс
**Задача:** Обработать CSV с заказами и вывести месячную сводку. **Качество:** *Поддерживаемость* **Смысл:** «Код должен быть понятен фрилансеру, который впервые его увидит». > **Результат:** Модель выдаёт код из 4‑5 небольших функций, каждая с докстрингом. Вложенность ≤ 2 уровней, имена переменных описательные. Проверка критериев: все функции укладываются в одну строку экрана, нет дублирования кода.
Ограничения и риски
- **Корректность логики не гарантируется** – для этого нужны отдельные тесты на реальных данных. - **Слишком строгие требования по обработке ошибок** могут добавить избыточные `try/except`, меняя ожидаемое поведение программы (особенно в задачах с точными выходами). - Метод проверен только на небольших самодостаточных задачах; эффективность для больших проектов с несколькими файлами не подтверждена.
**Поддержать проект донатом: Сбер 2202 2084 9881 5282. Заранее спасибо.**