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;
}