Що таке розгалужений алгоритм?
Коротка відповідь
Розгалужений алгоритм - це алгоритм, у якому залежно від істинності умови обирається і виконується одна з альтернативних гілок дій. У коді реалізується конструкціями if/else, else if, switch і тернарним оператором ?:, при цьому необрані гілки пропускаються.
Докладний розбір
Визначення
Розгалужений алгоритм містить точки прийняття рішень: виходячи з результату перевірки умов обирається одна з можливих гілок виконання. Найчастіше гілки взаємовиключні (if / else if / else). Можливі й незалежні перевірки (кілька if), коли можуть виконатися кілька гілок поспіль.
Коли застосовується
- Валідація і нормалізація вхідних даних
- Вибір варіанту бізнес-логіки (різні тарифи, статуси, режими)
- Обробка помилок і винятків, відновлення після помилок
- Роутинг/навігація, вибір представлення на UI
- Feature flags, A/B-тестування
- Контроль доступу (ролі/дозволи)
Базові форми розгалуження
if / else
const age = 20;
if (age >= 18) {
console.log('Дорослий');
} else {
console.log('Неповнолітній');
}Обирається одна з двох гілок залежно від умови.
else if (множинний вибір)
const score = 73;
let grade;
if (score >= 90) grade = 'A';
else if (score >= 75) grade = 'B';
else if (score >= 60) grade = 'C';
else grade = 'D';
// Виконується тільки перша відповідна гілка.switch (вибір за значенням)
function access(role) {
switch (role) {
case 'admin':
return 'Повний доступ';
case 'manager':
return 'Обмежений доступ';
case 'user':
return 'Базовий доступ';
default:
return 'Гість';
}
}
// Важливо: не забувати default і уникати "провалювання" (fallthrough), якщо воно не потрібне.Тернарний оператор (вираз)
const isMobile = window.innerWidth < 768;
const layout = isMobile ? 'mobile' : 'desktop';
// Гарний для компактних присвоєнь, не зловживайте вкладеністю.Ранні повернення (guard clauses)
function processOrder(order) {
if (!order) return 'Немає замовлення';
if (!order.items?.length) return 'Порожнє замовлення';
if (order.canceled) return 'Замовлення скасовано';
// Основна логіка
return 'ОК';
}
// Зменшують вкладеність і підвищують читабельність.Умови і логіка в JavaScript
Порівняння: ===, !==, >, >=, <, <=. Логіка: &&, ||, !. Коротке замикання дозволяє писати компактні перевірки.
Falsy-значення (в умові вважаються хибними): false, 0, -0, 0n, "", null, undefined, NaN. Все інше - truthy.
Типові помилки і best practices
-
Використовуйте строгі порівняння ===/!== замість ==/!=, щоб уникнути неочевидних приведень типів.
-
Не розміщуйте побічні ефекти в умовах; обчислюйте їх заздалегідь.
-
Уникайте глибокої вкладеності if - застосовуйте ранні повернення і виносьте логіку у функції/предикати.
-
У switch не забувайте default; використовуйте break або return, щоб виключити випадкове fallthrough.
-
Намагайтеся робити умови самодокументованими: виносьте складні перевірки у функції з зрозумілими іменами.
-
Якщо вибір залежить від значення ключа (наприклад, за роллю), замість довгого ланцюжка else if можна використовувати відображення:
javascriptconst accessByRole = { admin: 'Повний доступ', manager: 'Обмежений доступ', user: 'Базовий доступ', default: 'Гість', }; const role = 'manager'; const access = accessByRole[role] ?? accessByRole.default;
Складність і тестування
Кожна точка розгалуження збільшує цикломатичну складність. Тримайте функції короткими, розгалуження - пласкими. Забезпечуйте покриття тестами для кожної гілки: позитивні/негативні сценарії і граничні випадки.
Невеликі приклади з веб-розробки
- Валідація форми:
function validateSignup({ email, password }) {
if (!email) return 'Введіть email';
if (!/\S+@\S+\.\S+/.test(email)) return 'Невірний email';
if (!password) return 'Введіть пароль';
if (password.length < 8) return 'Пароль занадто короткий';
return 'OK';
}- Обробка відповіді сервера:
async function fetchUser(id) {
if (!id) throw new Error('id обов\'язковий');
const res = await fetch(`/api/users/${id}`);
if (!res.ok) {
if (res.status === 404) return null; // гілка: користувача не знайдено
throw new Error('Серверна помилка'); // гілка: інша помилка
}
return res.json(); // гілка: успіх
}Висновок
Розгалужений алгоритм - базовий інструмент керування потоком виконання. Грамотне використання умов, правильний вибір конструкцій (if/else, switch, тернарний оператор), ранні повернення і покриття тестами роблять код передбачуваним, читабельним і стійким.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.