Spec-Zone.ru › ESLint

max-lines-per-function

Принудительно устанавливает максимальное количество строк кода в функции

Некоторые люди считают большие функции признаком плохого кода. Большие функции, как правило, выполняют много задач и могут затруднять отслеживание происходящего. Многие руководства по стилю программирования диктуют ограничение на количество строк, которое может содержать функция. Данное правило помогает принудительно соблюдать этот стиль.

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

Это правило навязывает максимальное количество строк в функции для повышения поддерживаемости и снижения сложности.

Почему не использовать max-statements или другие правила измерения сложности?

Вложенные длинные цепочки методов, как в примере ниже, часто разбиваются на отдельные строки для повышения читаемости:

function() {
    return m("div", [
        m("table", {className: "table table-striped latest-data"}, [
            m("tbody",
                data.map(function(db) {
                    return m("tr", {key: db.dbname}, [
                        m("td", {className: "dbname"}, db.dbname),
                        m("td", {className: "query-count"},  [
                            m("span", {className: db.lastSample.countClassName}, db.lastSample.nbQueries)
                        ])
                    ])
                })
            )
        ])
    ])
}
  • max-statements будет сообщать об этом только как об одной инструкции, несмотря на то, что в коде 16 строк.
  • complexity будет сообщать только о сложности 1
  • max-nested-callbacks будет сообщать только о сложности 1
  • max-depth будет сообщать о глубине 0

Параметры

Это правило имеет следующие параметры, которые могут быть заданы с помощью объекта:

  • "max" (по умолчанию 50) навязывает максимальное количество строк в функции.

  • "skipBlankLines" (по умолчанию false) игнорирует строки, состоящие только из пробелов.

  • "skipComments" (по умолчанию false) игнорирует строки, содержащие только комментарии.

  • "IIFEs" (по умолчанию false) включает любой код, содержащийся в IIFE.

В качестве альтернативы, вы можете указать одно целое число для параметра max.

"max-lines-per-function": ["error", 20]

эквивалентно

"max-lines-per-function": ["error", { "max": 20 }]

Код

Примеры неправильного кода для этого правила со значением максимального значения:

Открыть в Playground
/*eslint max-lines-per-function: ["error", 2]*/
functionfoo(){var x =0;}
Открыть в Playground
/*eslint max-lines-per-function: ["error", 3]*/
functionfoo(){// a commentvar x =0;}
Открыть в Playground
/*eslint max-lines-per-function: ["error", 4]*/
functionfoo(){// a comment followed by a blank linevar x =0;}

Примеры правильного кода для этого правила со значением максимального значения:

Открыть в Playground
/*eslint max-lines-per-function: ["error", 3]*/
function foo() {
    var x = 0;
}
Открыть в Playground
/*eslint max-lines-per-function: ["error", 4]*/
function foo() {
    // a comment
    var x = 0;
}
Открыть в Playground
/*eslint max-lines-per-function: ["error", 5]*/
function foo() {
    // a comment followed by a blank line

    var x = 0;
}

skipBlankLines

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

Открыть в Playground
/*eslint max-lines-per-function: ["error", {"max": 2, "skipBlankLines": true}]*/
functionfoo(){var x =0;}

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

Открыть в Playground
/*eslint max-lines-per-function: ["error", {"max": 3, "skipBlankLines": true}]*/
function foo() {

    var x = 0;
}

skipComments

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

Открыть в Playground
/*eslint max-lines-per-function: ["error", {"max": 2, "skipComments": true}]*/
functionfoo(){// a commentvar x =0;}

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

Открыть в Playground
/*eslint max-lines-per-function: ["error", {"max": 3, "skipComments": true}]*/
function foo() {
    // a comment
    var x = 0;
}

IIFEs

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

Открыть в Playground
/*eslint max-lines-per-function: ["error", {"max": 2, "IIFEs": true}]*/
(function(){var x =0;}());

(()=>{var x =0;})();

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

Открыть в Playground
/*eslint max-lines-per-function: ["error", {"max": 3, "IIFEs": true}]*/
(function(){
    var x = 0;
}());

(() => {
    var x = 0;
})();

Когда не следует его использовать

Вы можете отключить это правило, если не беспокоитесь о количестве строк в ваших функциях.

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

  • complexity
  • max-depth
  • max-lines
  • max-nested-callbacks
  • max-params
  • max-statements
  • max-statements-per-line

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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