
Баг: Слишком глубокие вложения (лестница ужасов)
Когда ты вкладываешь if в if в if - код становится нечитаемым. Это называется "лестница ужасов" (pyramid of doom).
// ❌ ПЛОХО (не читается)
if hasCarrot {
if hasPotato {
if hasOnion {
if hasSalt {
fmt.Println("Овощное рагу!")
} else {
fmt.Println("Нет соли...")
}
} else {
fmt.Println("Нет лука...")
}
} else {
fmt.Println("Нет картошки...")
}
} else {
fmt.Println("Нет морковки...")
}Как исправить:
Ранний выход (early return) - но это для функций, мы пока не проходили, но если кратко - вместо того чтобы вкладывать код внутрь
if, проверяйте негативные условия и выходите из функции сразу.Объединять условия через
&&:
// ✅ ХОРОШО
if hasCarrot && hasPotato && hasOnion && hasSalt {
fmt.Println("Овощное рагу!")
} else {
fmt.Println("Чего-то не хватает...")
}Использовать
else ifвместо вложенных:
// ✅ ЛУЧШЕ
if !hasCarrot {
fmt.Println("Нет морковки")
} else if !hasPotato {
fmt.Println("Нет картошки")
} else if !hasOnion {
fmt.Println("Нет лука")
} else if !hasSalt {
fmt.Println("Нет соли")
} else {
fmt.Println("Овощное рагу!")
}"Лестница ужасов" - это признак того, что функция делает слишком много или неправильно структурирована. Цель рефакторинга - сделать основную логику плоской (минимальная вложенность), а проверки вынести наверх или в отдельные функции.
Загрузка...