YAGNI (вам це не знадобиться)
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;
}
// Краще (лише те, що потрібно зараз)
function processData(array) {
return array.filter(item => item.active);
}У цьому прикладі ми реалізуємо лише те, що вимагається поточними вимогами. Коли потреба в сортуванні або статистиці насправді виникне, ми додамо це тоді, виходячи з реальних потреб і вимог.
Зміст
Основна ІдеяПриклад
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.