Swift Review總結(jié)一:從 Swift Style 開始

最近湊了幾個熱心的小伙伴寫一些swift的新手demo(兩周后應(yīng)該能和大家見面了),我參與了review。于是借demo里的代碼總結(jié)一下新手寫swift要注意的問題,尤其是從oc轉(zhuǎn)到用swift寫的開發(fā)者。

每個語言都有自己的推薦風(fēng)格。顯然oc與swift有著不同的風(fēng)格。當(dāng)我們開始寫swift,首先要注意的就是按照swift的風(fēng)格寫,而不是沿用oc的風(fēng)格。

省略句末的分號

swift推崇簡潔的語法。如果一行里只有一句代碼,句末不要寫分號。

// ??
title = "swift 3";

// ??
title = "swift 3"

省略self.

不在閉包里的時候調(diào)用自身的屬性或者方式時省略self.。這點社區(qū)也產(chǎn)生過討論,有人建議需要強(qiáng)制的聲明self.,但是蘋果大聲的拒絕了。所以讓代碼更簡潔一點吧。

// ??
self.title = "swift 3"

// ??
title = "swift 3"

注意類型標(biāo)注的格式

當(dāng)我們給一個變量或者屬性標(biāo)注類型時的語法是這樣的:

var a: Type
var dict: [String: Any]

注意冒號后面有一個空格,如果是字典key的冒號后面有一個空格。
冒號后面緊跟著類型是不規(guī)范的寫法。

// ??
var name:Sring
var dict: [String:Any]
var dict: [String : Any]

當(dāng)然你可以利用SwiftLint幫你檢查。

注意函數(shù)聲明背后的空格

一個標(biāo)準(zhǔn)的函數(shù)語法是這樣的:

override func viewDidLoad() {
    super.viewDidLoad()
}

注意函數(shù)實現(xiàn) { 前有一個空格

 // ??
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

// 注意函數(shù)返回類型 -> 符號的前后空格
 // ??
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)."
}

閉包、函數(shù)實現(xiàn)不要寫在一行里

    //  ??
    var joke : JokeItem? {
        didSet {
            if let _ = joke { updateUI() }
        }
    }

    // ??
    var joke : JokeItem? {
        didSet {
            if let _ = joke {
                updateUI()
            }
        }
    }

對象初始化不要顯式調(diào)用init

通過()直接就是調(diào)用對象的初始化方法,不需要調(diào)用init

 //  ??
let url = NSURL.init(string: "github.com")

// ??
let url = NSURL(string: "github.com")

函數(shù)命名

oc的第一個參數(shù)名是省略的,所以會把第一個參數(shù)名帶到方法名上。swift 3以后調(diào)整為在調(diào)用時第一個參數(shù)名會展示。所以函數(shù)命名時不要把第一個參數(shù)相關(guān)命名放在函數(shù)名上。

 //  ??
func bindWith(data: String) {

}

// ??
func bind(withData: String) {
    
}

bind(withData: "swift")

然而這里直接把介詞去掉顯得更加簡潔:

// ??
func bind(data: String) {
    
}

bind(data: "swift")

歡迎關(guān)注我的微博:@沒故事的卓同學(xué)


相關(guān)鏈接:
swift style guide

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容