Весной стартует сезон найма, успей отхватить свой оффер!

YAGNI (You Aren't Gonna Need It)

YAGNI (You Aren’t Gonna Need It) — это принцип разработки программного обеспечения, согласно которому не стоит реализовывать функционал, который вам пока не нужен. Проще говоря, не нужно писать код и создавать инфраструктуру «на будущее», если сейчас в этом нет непосредственной необходимости.

Основная идея

  • Избегать избыточной функциональности
    Когда мы заранее пытаемся предусмотреть все возможные сценарии использования кода, мы рискуем усложнить архитектуру. Эти «лишние» части могут так и не понадобиться, а время на их разработку и сопровождение будет потрачено впустую.

  • Сфокусироваться на текущих задачах
    Принцип YAGNI помогает не отвлекаться на гипотетические функции, а концентрироваться на текущих реальных потребностях проекта. Когда необходимость в дополнительном функционале действительно возникнет, вы реализуете её более корректно и эффективно.

Пример

Представим, что у нас есть задача создать функцию для обработки списка данных. Мы точно знаем, что текущие требования — это просто фильтровать массив по определённому условию и возвращать результат.

// Плохо (учёт возможных сценариев, которые пока не нужны)
function processData(array) {
  // Фильтруем
  let filtered = array.filter(item => item.active);

  // Сортируем по нескольким полям (хотя сейчас нужен только фильтр)
  filtered.sort((a, b) => a.priority - b.priority || a.id - b.id);

  // Храним дополнительную статистику (не требуется по ТЗ)
  const stats = {
    count: filtered.length,
    maxPriority: Math.max(...filtered.map(f => f.priority))
  };
  
  // Предполагаем, что в будущем пригодится лог для отладки
  console.log("DEBUG: processed data", filtered, stats);

  return filtered;
}