Краевые случаи

Частая ситуация на собеседованиях. Кандидату предложили задачу — соединить массив строк в одно слово:

['apples', 'pears', 'cherries'] → 'apples, pears and cherries'

Окей, чел придумал алгоритм, написал его, проверил и отдал. Собеседующий передает что-то краевое, и функция ломается.

А все потому, что кандидат пропустил последний этап — не спросил себя: «Окей, а как сломать мой алгоритм?»:

  • А что, если передать пустой массив?
  • Окей, а если в массиве пустая строка?
  • А если одно слово?
  • А что, если передать не массив?
  • А вдруг вместо строки будет undefined?

Написать код — это не всё. Главное — загасить свой алгоритм, иначе кто-нибудь загасит его на проде.

Следующий уровень — гасить алгоритм еще до написания кода. Так и до TDD недалеко :)

Загаси свой алгоритм