~/VibeHandbook

Глава 03 · 02

Указывайте входы, выходы и граничные случаи

Задача не определена, пока не определены её границы. Старшие инженеры мыслят в категориях «что входит, что выходит и что происходит, когда что-то идёт не так». Заложите это в промпт.

Write a function to parse a date string.
Write a function parseDate(input: string): Date | null.

Inputs: ISO 8601 strings ("2026-06-14", "2026-06-14T10:30:00Z").
Output: a Date object, or null if the string is invalid.

Edge cases to handle:
- empty string or whitespace -> null
- valid format but impossible date (2026-02-30) -> null
- trailing garbage ("2026-06-14xyz") -> null

Do not throw. Return null for all invalid input.

Когда вы называете граничные случаи, AI их обрабатывает. Когда не называете, он пишет счастливый путь, а вы обнаруживаете пробелы в проде. Та же дисциплина применима и за пределами чистых функций: для эндпоинта укажите успешный ответ и ответы с ошибками (какой статус-код на дублирующийся email? на некорректное тело?). Для UI-компонента укажите пустое состояние и состояние загрузки, а не только заполненное. Интересное поведение большинства программ живёт на их краях, так что именно там ваш промпт и должен тратить слова.

Если вы не уверены, какие тут граничные случаи, сперва спросите AI: «Какие граничные случаи должен обрабатывать парсер дат?» — а затем подайте ответ обратно как ограничения. Это превращает модель из генератора кода в генератор чек-листа, а ревью чек-листа быстрее, чем отладка случаев, которые вы забыли.

Хотите офлайн-версию?

Получите PDF + EPUB + скачиваемую библиотеку промптов + обновления версий.

$ Получить PDF — $39