流利的用法

使用自然语言

函数调用应该接近自然英语。

例:

list.insert(element, at: index) 

代替

list.insert(element, position: index)

命名工厂方法

工厂方法应以前缀`make`开头。

例:

factory.makeObject()

在初始化程序和工厂方法中命名参数

第一个参数的名称不应该与命名工厂方法或初始化程序有关。

例:

factory.makeObject(key: value)

代替:

factory.makeObject(havingProperty: value)

根据副作用命名

  • 具有副作用的函数(变异函数)应使用以 form- 为前缀的动词或名词来命名。
  • 没有副作用的函数(非突变函数)应使用后缀为 -ing-ed 的名词或动词命名。

示例:变异函数:

print(value)
array.sort()                 // in place sorting
list.add(value)              // mutates list
set.formUnion(anotherSet)    // set is now the union of set and anotherSet

非突变功能:

let sortedArray = array.sorted()     // out of place sorting
let union = set.union(anotherSet)    // union is now the union of set and another set

布尔函数或变量

涉及布尔值的陈述应理解为断言。

例:

set.isEmpty
line.intersects(anotherLine)

命名协议

  • 应该使用名词来命名描述某些内容的协议。
  • 描述功能的协议应该以 -able-ible-ing 作为后缀。

例:

Collection        // describes that something is a collection
ProgressReporting // describes that something has the capability of reporting progress
Equatable         // describes that something has the capability of being equal to something

类型和属性

类型,变量和属性应该读作名词。

例:

let factory = ...
let list = [1, 2, 3, 4]