Как бы ты реализовал расширяемость бизнес-правил FizzBuzz (например, добавление нового правила для числа 7), чтобы код был поддерживаемым и чистым?

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

const rules = [
  { divisor: 3, text: 'Fizz' },
  { divisor: 5, text: 'Buzz' },
  { divisor: 7, text: 'Bazz' }
];
function fizzBuzz(number, rules) {
  const result = rules
    .filter(rule => number % rule.divisor === 0)
    .map(rule => rule.text)
    .join('');
  return result || String(number);
}

Контракт: целое число и заранее проверенные положительные делители с непустыми текстами. Новое правило добавляется без вложенных if. Порядок правил задаёт порядок слов при нескольких совпадениях.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее