# 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)
])
])
})
)
])
])
}
- 尽管有 16 行代码,
max-statements
只会将此报告为 1 条语句。 complexity
只会报告复杂度为 1max-nested-callbacks
只会报1max-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 }]
# code
此规则的错误代码示例,最大值为 2
:
/*eslint max-lines-per-function: ["error", 2]*/
function foo() {
var x = 0;
}
/*eslint max-lines-per-function: ["error", 2]*/
function foo() {
// a comment
var x = 0;
}
/*eslint max-lines-per-function: ["error", 2]*/
function foo() {
// a comment followed by a blank line
var x = 0;
}
此规则的正确代码示例,最大值为 3
:
/*eslint max-lines-per-function: ["error", 3]*/
function foo() {
var x = 0;
}
/*eslint max-lines-per-function: ["error", 3]*/
function foo() {
// a comment
var x = 0;
}
/*eslint max-lines-per-function: ["error", 3]*/
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}]*/
function foo() {
var x = 0;
}
此规则使用 { "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}]*/
function foo() {
// a comment
var x = 0;
}
此规则使用 { "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}]*/
(function(){
var x = 0;
}());
(() => {
var x = 0;
})();
此规则使用 { "IIFEs": true }
选项的正确代码示例:
/*eslint max-lines-per-function: ["error", {"max": 3, "IIFEs": true}]*/
(function(){
var x = 0;
}());
(() => {
var x = 0;
})();
# 何时不使用
如果您不关心函数中的行数,可以关闭此规则。