Указывайте входы, выходы и граничные случаи
Задача не определена, пока не определены её границы. Старшие инженеры мыслят в категориях «что входит, что выходит и что происходит, когда что-то идёт не так». Заложите это в промпт.
Напиши функцию для разбора строки с датой.
Напиши функцию parseDate(input: string): Date | null.
Входы: строки ISO 8601 ("2026-06-14", "2026-06-14T10:30:00Z").
Выход: объект Date или null, если строка некорректна.
Граничные случаи для обработки:
- пустая строка или пробелы -> null
- верный формат, но невозможная дата (2026-02-30) -> null
- мусор в конце ("2026-06-14xyz") -> null
Не бросай исключений. Возвращай null для любого неверного ввода.
Когда вы называете граничные случаи, AI их обрабатывает. Когда не называете, он пишет счастливый путь, а вы обнаруживаете пробелы в проде. Та же дисциплина применима и за пределами чистых функций: для эндпоинта укажите успешный ответ и ответы с ошибками (какой статус-код на дублирующийся email? на некорректное тело?). Для UI-компонента укажите пустое состояние и состояние загрузки, а не только заполненное. Интересное поведение большинства программ живёт на их краях, так что именно там ваш промпт и должен тратить слова.
Если вы не уверены, какие тут граничные случаи, сперва спросите AI: «Какие граничные случаи должен обрабатывать парсер дат?» — а затем подайте ответ обратно как ограничения. Это превращает модель из генератора кода в генератор чек-листа, а ревью чек-листа быстрее, чем отладка случаев, которые вы забыли.