swift - Swift – 函数体长度违规或行长度违规
问题描述
我在 Xcode (swift) 上有一个函数,它返回一个很长的数组,即每行一个字。喜欢
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
您可以在这个SO question中找到实际示例
推荐阅读
- javascript - 如何将变量的值从子组件发送到父组件?
- c - gcc 选项:pkg-config --libs --cflags gtk+-3.0
- python - 如何使用python中的标题提取文本文件中的特定行并在函数中返回它?
- c# - 如何优化滚动视图?
- python - 如何在 Python 中将文档 ID 添加到 Firestore 文档
- php - 我域上的管理面板显示错误的用户和密码。数据库,phpmyadmin 相关问题?
- java - 为什么 AsyncTask Connection 不返回任何东西?
- python - 正在绘制我的数据框的哪些部分?
- python - 是否可以创建一个仅从外部数据库读取数据并提供 REST API 的 Django 应用程序?
- javascript - Thymeleaf 表更新而无需重新加载页面