Следует избегать чрезмерной вложенности кода 🪆.
“If you need more than 3 levels of indentation, you’re screwed anyway, and should fix your program” – linux coding style guide
«Если вам потребовалось более 3-x уровней вложенности, то, скорее всего, вы и так уже в тупике и должны переписать вашу программу» – Linux руководство по стилю программирования
Примеры вложенности
Одноуровневая вложенность
Двухуровневая вложенность
Трехуровневая вложенность
4-ех уровневая вложенность 😖
Способы “разложения”
- Извлечение: выделение части функции в отдельную функцию
- Инверсия: перестановка и инвертирование условий + переход к раннему возврату из функции
Применение извлечения
Применение инверсии
Смысл применения инверсии. Когда мы вкладываем благоприятный исход глубже по пути условных конструкций, создается избыточная вложенность. Следует сначала сделать проверку относящуюся к неблагоприятному исходу.
Избегать вложенности стоит потому, что она усложняет понимание кода. Когда все неблагоприятные условия вынесены в начало функции, а основной поток выполнения идет дальше, это упрощает чтение и позволяет сосредоточиться на ключевой логике. Вложенность заставляет держать в голове слишком много условий, что ухудшает читаемость и усложняет поддержку кода.