Сценарий

Мы изменили контракт add(...args) на add(x,y) . Однако теперь все модульные тесты, которые добавляют более двух аргументов, например add(1,2,3), ломаются.

Сценарий действует в обратном направлении от того, что сделали бы большинство здравомыслящих людей, так что, надеюсь, его легко запомнить.

Мотивация

Если наш дизайн API оставляет место для улучшения, но мы уже реализовали мегабайты модульных тестов для него, которые все сломаются при внесении изменений, то мы с меньшей вероятностью будем выполнять обновления API, особенно если API ускользнул в производство. .

Подход

add(...args) — наиболее гибкая реализация функции добавления.

Мы можем add(1,2,3,4,5,6) или любое количество аргументов. Мы также можем передать массив, выполнив let arr = [2,3,4] и add(...arr) .

Используя наиболее гибкую реализацию, мы минимизируем будущую работу по рефакторингу, что оставляет больше времени для Fortnite!.

Бонус

Сохраняя модули/пакеты небольшими и следуя философии модулей, если вы найдете более гибкую реализацию для вашего API, которая является критическим изменением, вы все равно сможете легко обновить как свои тесты, так и все клиенты.