Spec-Zone.ru › ESLint

max-depth

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

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

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

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

Параметры

У этого правила есть параметр — число или объект:

  • "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