🔖 C++ вложенные If-Else: от хаоса к порядку
Знакомая картина? Код превратился в лестницу из условий, и вы уже потерялись на третьем уровне вложенности?
if (user.isActive()) {
if (user.hasPermission()) {
if (data.isValid()) {
if (connection.isAlive()) {
// Наконец-то делаем что-то полезное!
}
}
}
}❌Антипаттерн "Стрелка"
Это классический код-спагетти! Каждый новый уровень делает код менее читаемым и более подверженным ошибкам.
✅ Решения:
1. Ранний return:
if (!user.isActive()) return false;
if (!user.hasPermission()) return false;
if (!data.isValid()) return false;
// Чистый код без вложенности!
2. Разбивка на функции:
bool validateUser(const User& user) {
return user.isActive() && user.hasPermission();
}
bool processRequest() {
if (!validateUser(user)) return false;
// Логика стала понятнее!
}3. Switch вместо if-else цепочек:
switch (userRole) {
case ADMIN: return processAdminRequest();
case USER: return processUserRequest();
default: return handleUnknownRole();
}Практические применения:
- Валидация данных - проверка форм по шагам
- Игровая логика - разветвленные сценарии
- Обработка ошибок - каскадные проверки
Золотое правило:
Если вложенность больше 3-х уровней — пора рефакторить! Ваш код должен читаться как книга, а не как ребус.
📎 Статья
🎙 Новости
📝 База вопросов
