## 命名(Naming)
使用驼峰式的描述性命名方式,为类,方法,变量等命名。类名的首字母应该大写,而方法和变量的首字母使用小写字符。
推荐做法:
~~~
private let maximumWidgetCount = 100
class WidgetContainer {
var widgetButton: UIButton
let widgetHeightPercentage = 0.85
}
~~~
不推荐做法:
~~~
let MAX_WIDGET_COUNT = 100
class app_widgetContainer {
var wBut: UIButton
let wHeightPct = 0.85
}
~~~
对于函数和初始化方法,推荐对所有的参数进行有意义的命名,除非上下文已经非常清楚。如果外部参数命名可以使得函数调用更加可读,也应该把外部参数命名包含在内。
~~~
func dateFromString(dateString: String) -> NSDate
func convertPointAt(#column: Int, #row: Int) -> CGPoint
func timedAction(#delay: NSTimeInterval, perform action: SKAction) -> SKAction!
// 调用方式如下:
dateFromString("2014-03-14")
convertPointAt(column: 42, row: 13)
timedAction(delay: 1.0, perform: someOtherAction)
~~~
对于方法来说,参照标准的苹果惯例,方法命名含义要引用到第一个参数:
~~~
class Guideline {
func combineWithString(incoming: String, options: Dictionary?) { ... }
func upvoteBy(amount: Int) { ... }
}
~~~
### 枚举(Enumerations)
使用首字母大写的驼峰命名规则来命名枚举值:
~~~
enum Shape {
case Rectangle
case Square
case Triangle
case Circle
}
~~~
### 文章(Prose)
当我们在文章中(教程,图书,注释等)需要引用到函数时,需要从调用者的视角考虑,包含必要的参数命名,或者使用`_`表示不需要命名的参数。
> 从你自身实现的`init`中调用`convertPointAt(column:row:)`。
>
> 如果你调用`dateFromString(_:)`,需要保证你提供的输入字符串格式是”yyyy-MM-dd”。
>
> 如果你需要在`viewDidLoad()`中调用`timedAction(delay:perform:)`,记得提供调整后的延迟值和需要处理的动作。
>
> 你不能直接调用数据源方法`tableView(_:cellForRowAtIndexPath:)`
当你遇到疑问时,可以看看Xcode在`jump bar`中是如何列出方法名的 —— 我们的风格与此匹配。
[![](https://box.kancloud.cn/2015-11-17_564b00a5611f5.png)](https://github.com/raywenderlich/swift-style-guide/raw/master/screens/xcode-jump-bar.png "Methods in Xcode jump bar")Methods in Xcode jump bar
### 类的前缀(Class Prefixes)
Swift类型自动被模块名设置了名称空间,所以你不需要加一个类的前缀。如果两个来自不同模块的命名冲突了,你可以附加一个模块名到类型命名的前面来消除冲突。
~~~
import SomeModule
let myClass = MyModule.UsefulClass()
~~~