Spec-Zone.ru › ESLint

Глубина вложенности

Ограничение максимальной глубины вложенности блоков

Многие разработчики считают код сложным для чтения, если блоки вложены глубже определённого уровня.

Подробное описание правила

Это правило устанавливает максимальную глубину вложенности блоков, чтобы снизить сложность кода.

Параметры

Это правило имеет числовой или объектный параметр:

  • "max" (по умолчанию 4) устанавливает максимальную глубину вложенности блоков

Устарело: Свойство объекта maximum устарело; используйте вместо него свойство объекта max.

max

Примеры некорректного кода для этого правила с параметром по умолчанию { "max": 4 }:

Открыть в Playground
/*eslint max-depth: ["error", 4]*/

function foo() {
    for (;;) { // Nested 1 deep
        while (true) { // Nested 2 deep
            if (true) { // Nested 3 deep
                if (true) { // Nested 4 deep
                    if(true){// Nested 5 deep}
                }
            }
        }
    }
}

Примеры корректного кода для этого правила с параметром по умолчанию { "max": 4 }:

Открыть в Playground
/*eslint max-depth: ["error", 4]*/

function foo() {
    for (;;) { // Nested 1 deep
        while (true) { // Nested 2 deep
            if (true) { // Nested 3 deep
                if (true) { // Nested 4 deep
                }
            }
        }
    }
}

Обратите внимание, что статические блоки класса не считаются вложенными блоками, и их глубина рассчитывается отдельно от окружающего контекста.

Примеры некорректного кода для этого правила с параметром { "max": 2 }:

Открыть в Playground
/*eslint max-depth: ["error", 2]*/

function foo() {
    if (true) { // Nested 1 deep
        class C {
            static {
                if (true) { // Nested 1 deep
                    if (true) { // Nested 2 deep
                        if(true){// Nested 3 deep}
                    }
                }
            }
        }
    }
}

Примеры корректного кода для этого правила с параметром { "max": 2 }:

Открыть в Playground
/*eslint max-depth: ["error", 2]*/

function foo() {
    if (true) { // Nested 1 deep
        class C {
            static {
                if (true) { // Nested 1 deep
                    if (true) { // Nested 2 deep
                    }
                }
            }
        }
    }
}

Связанные правила

  • complexity
  • max-len
  • max-lines
  • max-lines-per-function
  • max-nested-callbacks
  • max-params
  • max-statements

Версия

Это правило было добавлено в ESLint v0.0.9.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/max-depth

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API