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 }]
Код
Примеры неправильного кода для этого правила со значением максимального значения:
/*eslint max-lines-per-function: ["error", 2]*/
/*eslint max-lines-per-function: ["error", 3]*/
/*eslint max-lines-per-function: ["error", 4]*/
Примеры правильного кода для этого правила со значением максимального значения:
/*eslint max-lines-per-function: ["error", 3]*/
function foo() {
var x = 0;
}
/*eslint max-lines-per-function: ["error", 4]*/
function foo() {
// a comment
var x = 0;
}
/*eslint max-lines-per-function: ["error", 5]*/
function foo() {
// a comment followed by a blank line
var x = 0;
}
skipBlankLines
Примеры неправильного кода для этого правила с параметром { "skipBlankLines": true }:
/*eslint max-lines-per-function: ["error", {"max": 2, "skipBlankLines": true}]*/
Примеры правильного кода для этого правила с параметром { "skipBlankLines": true }:
/*eslint max-lines-per-function: ["error", {"max": 3, "skipBlankLines": true}]*/
function foo() {
var x = 0;
}
skipComments
Примеры неправильного кода для этого правила с параметром { "skipComments": true }:
/*eslint max-lines-per-function: ["error", {"max": 2, "skipComments": true}]*/
Примеры правильного кода для этого правила с параметром { "skipComments": true }:
/*eslint max-lines-per-function: ["error", {"max": 3, "skipComments": true}]*/
function foo() {
// a comment
var x = 0;
}
IIFEs
Примеры неправильного кода для этого правила с параметром { "IIFEs": true }:
/*eslint max-lines-per-function: ["error", {"max": 2, "IIFEs": true}]*/
(());
()();
Примеры правильного кода для этого правила с параметром { "IIFEs": true }:
/*eslint max-lines-per-function: ["error", {"max": 3, "IIFEs": true}]*/
(function(){
var x = 0;
}());
(() => {
var x = 0;
})();
Когда не следует его использовать
Вы можете отключить это правило, если не беспокоитесь о количестве строк в ваших функциях.
Связанные правила
Версия
Это правило было добавлено в ESLint v5.0.0.
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/max-lines-per-function