Swift – 函数体长度违规或行长度违规
Swift – Function Body Length Violation or Line Length Violation
我在 Xcode (swift) 上有一个函数,returns 一个很长的数组,每行一个字。喜欢
static func en() -> [String] {
[
"a",
"about",
"above",
"after",
"again",
"against",
"all",
"am",
...
当我尝试编译它时,我得到:
Function Body Length Violation: Function body should span 40 lines or less excluding comments and whitespace: currently spans 175 lines (function_body_length)
如果我尝试删除换行符并添加空格,我会得到这个
Line Length Violation: Line should be 120 characters or less: currently 1492 characters (line_length)
我认为是 SwiftLint 的问题。
我该如何解决这个问题?如何禁用此错误。
选项 1:调整布局或设计
你的问题好像是源代码中的英文单词太长造成的
在每行一个项目和一行包含所有项目之间的一种简单方法是 将此数据分布在多行上:
1492 个字符分成 120 行给出 13 行。如果您考虑到 4.7 的平均英语单词长度(在您的情况下,平均不可分割的标记长度为 6.7,并带有引号,您可能不得不在额外的行上移动一些词。做数学,平均而言,额外的行必须额外包含 88 个字符 (6.7*13),所以第 14 行。考虑到 175 行限制,你仍然有足够的边距 ;-)
更好的方法是将数据存储在文件中,然后在运行-时间 将数据动态加载到数组中。不仅不会让你的源代码超重,而且还有助于维护新词列表,以及国际化。
选项 2:配置 linter
相对较小的行长度和正文长度限制与语法或编译器限制无关。它是静态分析规则,旨在挑战您编写更具可读性的代码。
- 在项目级别,在文件中
.swiftlint.yml
- 在源码中,加上注释
// swiftlint:disable <rule1> [<rule2> <rule3>...]
您可以在
中找到带有 line_length
的实际示例
我想你可以把你的数组放在一个 json 文件中并像那样解码它。
if let url = Bundle.main.url(forResource: "Filename", withExtension: "json") {
do {
let data = try Data(contentsOf: url)
let array = try! JSONDecoder().decode(YourModel.self, from: data)
// deal with it.
} catch {
print("error",error)
}
}
我在 Xcode (swift) 上有一个函数,returns 一个很长的数组,每行一个字。喜欢
static func en() -> [String] {
[
"a",
"about",
"above",
"after",
"again",
"against",
"all",
"am",
...
当我尝试编译它时,我得到:
Function Body Length Violation: Function body should span 40 lines or less excluding comments and whitespace: currently spans 175 lines (function_body_length)
如果我尝试删除换行符并添加空格,我会得到这个
Line Length Violation: Line should be 120 characters or less: currently 1492 characters (line_length)
我认为是 SwiftLint 的问题。
我该如何解决这个问题?如何禁用此错误。
选项 1:调整布局或设计
你的问题好像是源代码中的英文单词太长造成的
在每行一个项目和一行包含所有项目之间的一种简单方法是 将此数据分布在多行上:
1492 个字符分成 120 行给出 13 行。如果您考虑到 4.7 的平均英语单词长度(在您的情况下,平均不可分割的标记长度为 6.7,并带有引号,您可能不得不在额外的行上移动一些词。做数学,平均而言,额外的行必须额外包含 88 个字符 (6.7*13),所以第 14 行。考虑到 175 行限制,你仍然有足够的边距 ;-)
更好的方法是将数据存储在文件中,然后在运行-时间 将数据动态加载到数组中。不仅不会让你的源代码超重,而且还有助于维护新词列表,以及国际化。
选项 2:配置 linter
相对较小的行长度和正文长度限制与语法或编译器限制无关。它是静态分析规则,旨在挑战您编写更具可读性的代码。
- 在项目级别,在文件中
.swiftlint.yml
- 在源码中,加上注释
// swiftlint:disable <rule1> [<rule2> <rule3>...]
您可以在
line_length
的实际示例
我想你可以把你的数组放在一个 json 文件中并像那样解码它。
if let url = Bundle.main.url(forResource: "Filename", withExtension: "json") {
do {
let data = try Data(contentsOf: url)
let array = try! JSONDecoder().decode(YourModel.self, from: data)
// deal with it.
} catch {
print("error",error)
}
}