Блок 4 · Урок 2 из 4 · ≈ 9 минут · цель: заставить дизайн стать явным до реализации
Сначала дизайн-план, потом код
Design plan before code
Главная мысль: перед кодом агент должен назвать границы, интерфейс, проверку и риск лишних абстракций.
До кода: какой модуль меняем и почему.
После плана: реализация уже не блуждает.
Зачем это вам
Агент может быстро начать писать код и только потом объяснить, почему появились новые файлы. Дизайн-план разворачивает порядок: сначала агент показывает архитектурное намерение, потом реализует маленький шаг.
Это особенно полезно, когда правка может затронуть интерфейс, модуль, seam, тесты или правила предметной области.
Суть
Попросите агента назвать текущую структуру: где живет понятие, кто его использует, какие интерфейсы уже есть.
Попросите предложить один маленький дизайн-шаг: что скрываем, какой интерфейс сохраняем или вводим, почему это не pass-through.
Попросите назвать проверку: какой тест или сценарий докажет, что поведение сохранилось или улучшилось.
Аналогия
Дизайн-план - как эскиз перед ремонтом. Не нужно рисовать дворец, но нужно понять, какую стену трогать нельзя и где будет проходить проводка.
Запомните одно
Если агент не может объяснить модуль, интерфейс и проверку до кода, он, скорее всего, будет проектировать случайно.
Фраза агента → что он имеет в виду
- «Сначала изучу callers»
- Агент ищет, кто зависит от текущего интерфейса и где изменение может расползтись.
- «Предлагаю не вводить новый seam»
- Возможно, вариативности пока нет, и новый слой будет гипотетическим.
- «Проверю через публичное поведение»
- План защищает внешний контракт, а не внутренний порядок шагов.
Мини-словарь
- Design plan
- Дизайн-план: короткое объяснение изменения до кода.
- Small design step
- Маленький дизайн-шаг: ограниченная правка, которая улучшает границу без большого переписывания.
Проверьте себя
Что нужно попросить до реализации?
Верно: дизайн-план делает архитектурное решение видимым до кода.
Связанные материалы
Основной источник
- A Philosophy of Software Design, John Ousterhout.
- Локальный скилл codebase-design: module, interface, seam, adapter, depth, leverage, locality.