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
只会将此报告为 1 个语句,尽管它是 16 行代码。complexity
只会报告复杂度为 1max-nested-callbacks
只会报告 1max-depth
将报告深度为 0
选项
此规则具有以下选项,可以使用对象指定
-
"max"
(默认值50
)强制执行函数中的最大行数。 -
"skipBlankLines"
(默认值false
)忽略仅由空白组成的行。 -
"skipComments"
(默认值false
)忽略仅包含注释的行。 -
"IIFEs"
(默认值false
)包含 IIFEs 中包含的任何代码。
或者,您可以为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 中引入。