最近湊了幾個熱心的小伙伴寫一些swift的新手demo(兩周后應該能和大家見面了),我參與了review。于是借demo里的代碼總結一下新手寫swift要注意的問題,尤其是從oc轉到用swift寫的開發(fā)者。
每個語言都有自己的推薦風格。顯然oc與swift有著不同的風格。當我們開始寫swift,首先要注意的就是按照swift的風格寫,而不是沿用oc的風格。
省略句末的分號
swift推崇簡潔的語法。如果一行里只有一句代碼,句末不要寫分號。
// ??
title = "swift 3";
// ??
title = "swift 3"
省略self.
不在閉包里的時候調用自身的屬性或者方式時省略self.。這點社區(qū)也產生過討論,有人建議需要強制的聲明self.,但是蘋果大聲的拒絕了。所以讓代碼更簡潔一點吧。
// ??
self.title = "swift 3"
// ??
title = "swift 3"
注意類型標注的格式
當我們給一個變量或者屬性標注類型時的語法是這樣的:
var a: Type
var dict: [String: Any]
注意冒號后面有一個空格,如果是字典key的冒號后面有一個空格。
冒號后面緊跟著類型是不規(guī)范的寫法。
// ??
var name:Sring
var dict: [String:Any]
var dict: [String : Any]
當然你可以利用SwiftLint幫你檢查。
注意函數聲明背后的空格
一個標準的函數語法是這樣的:
override func viewDidLoad() {
super.viewDidLoad()
}
注意函數實現 { 前有一個空格
// ??
class User{
subscript(index: Int) -> T{
return objects[index]
}
}
// ??
class User {
subscript(index: Int) -> T {
return objects[index]
}
}
二元操作符前后有空格
// ??
var sum = 1+2
// ??
var sum = 1 + 2
// 注意函數返回類型 -> 符號的前后空格
// ??
func greet(person: String, day: String)->String {
return "Hello \(person), today is \(day)."
}
// ??
func greet(person: String, day: String) -> String {
return "Hello \(person), today is \(day)."
}
閉包、函數實現不要寫在一行里
// ??
var joke : JokeItem? {
didSet {
if let _ = joke { updateUI() }
}
}
// ??
var joke : JokeItem? {
didSet {
if let _ = joke {
updateUI()
}
}
}
對象初始化不要顯式調用init
通過()直接就是調用對象的初始化方法,不需要調用init
// ??
let url = NSURL.init(string: "github.com")
// ??
let url = NSURL(string: "github.com")
函數命名
oc的第一個參數名是省略的,所以會把第一個參數名帶到方法名上。swift 3以后調整為在調用時第一個參數名會展示。所以函數命名時不要把第一個參數相關命名放在函數名上。
// ??
func bindWith(data: String) {
}
// ??
func bind(withData: String) {
}
bind(withData: "swift")
然而這里直接把介詞去掉顯得更加簡潔:
// ??
func bind(data: String) {
}
bind(data: "swift")
歡迎關注我的微博:@沒故事的卓同學
相關鏈接:
swift style guide