如果一个代码单元的接口(参数列表) 复杂的话, 一般都是不好的预兆.
故需要将代码单元的参数个数进行限制, 最多 4 个参数.
拥有简单接口的代码单元更易理解, 更易重用.
如果存在多参数的情况, 则可以将某些参数展开到一个参数对象中(或称为 Data transfer object 或 parameter object), 通过传入对象的方式来达到减少参数个数的目的.
不过有的时候参数无法被合理归入到某个对象中, 则此时可以利用将方法展开到方法对象的手段进行处理.
附录
附上再次修改的 swiftlint 配置文件:
disabled_rules: # rule identifiers to exclude from running
# - colon
# - comma
# - control_statement
# - for_where
# - force_unwrapping
opt_in_rules: # some rules are only opt-in
- empty_count
- missing_docs
- closure_end_indentation
- closure_spacing
- force_unwrapping
- implicitly_unwrapped_optional
- operator_usage_whitespace
- redundant_nil_coalescing
included: # 包含目录`--path` is ignored if present.
- ./
excluded: # 排除目录, 这个是在包含目录之前进行排除的
- Carthage
- Pods
force_cast: warning # implicitly
force_try:
severity: warning # explicitly
# 行宽
line_length: 80
# 类型体的长度
type_body_length:
- 300 # warning
- 400 # error
# 方法或函数体的长度
function_body_length: 20
# 方法或函数的参数个数限制
function_parameter_count: 4
# 文件的长度限制
file_length:
warning: 500
error: 1200
# 代码单元结点分支个数
cyclomatic_complexity:
warning: 5
error: 10
# 类型名称的长度规定
type_name:
min_length: 2 # only warning
max_length: # warning and error
warning: 40
error: 50
excluded: iPhone # excluded via string
# 标识符长度规定
identifier_name:
min_length: # only min_length
error: 2 # only error
excluded: # excluded via string array
- T
reporter: "xcode" # reporter type (xcode, json, csv, checkstyle, junit, html, emoji)