## 命名(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://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()
~~~