Когда вся логика уходит в глубокую вложенность, читать метод становится больно: основной сценарий спрятан где-то внизу, а перед ним несколько уровней проверок. Проще использовать guard clauses - ранние проверки с выходом из метода. Было: - проверяем user - внутри проверяем active - внутри проверяем order - внутри проверяем paid - только потом выполняем основное действие Стало: - если user == null - сразу ошибка - если user неактивен - сразу ошибка - если order == null - сразу ошибка - если order не оплачен - сразу ошибка - основная логика остаётся плоской и читаемой Такой код легче: - читать - тестировать - ревьюить - расширять без превращения метода в пирамиду из if Guard clauses - маленький приём, который сильно улучшает чистоту кода.