<读书笔记>(代码单元层面)BMS-4: 代码单元的接口尽量简单

如果一个代码单元的接口(参数列表) 复杂的话, 一般都是不好的预兆.

故需要将代码单元的参数个数进行限制, 最多 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)

你可能感兴趣的:(<读书笔记>(代码单元层面)BMS-4: 代码单元的接口尽量简单)