Краевые случаи
Частая ситуация на собеседованиях. Кандидату предложили задачу — соединить массив строк в одно слово:
['apples', 'pears', 'cherries'] → 'apples, pears and cherries'
Окей, чел придумал алгоритм, написал его, проверил и отдал. Собеседующий передает что-то краевое, и функция ломается.
А все потому, что кандидат пропустил последний этап — не спросил себя: «Окей, а как сломать мой алгоритм?»:
- А что, если передать пустой массив?
- Окей, а если в массиве пустая строка?
- А если одно слово?
- А что, если передать не массив?
- А вдруг вместо строки будет undefined?
Написать код — это не всё. Главное — загасить свой алгоритм, иначе кто-нибудь загасит его на проде.
Следующий уровень — гасить алгоритм еще до написания кода. Так и до TDD недалеко :)
Загаси свой алгоритм