好的代碼有一些特性:簡(jiǎn)明,自我解釋,優(yōu)秀的組織,良好的文檔,良好的命名,優(yōu)秀的設(shè)計(jì)以及可以被久經(jīng)考驗(yàn)。
本書(shū)的一個(gè)理念是是代碼的清晰性優(yōu)先于性能,同時(shí)闡述為什么應(yīng)該這么做。
1. 條件語(yǔ)句體應(yīng)該總是被大括號(hào)包圍。
2. 不要使用尤達(dá)表達(dá)式
推薦: if ([myValue isEqual:@42]) { ...
不推薦: if ([@42 isEqual:myValue]) { ...
3. nil 和 BOOL 檢查
nil 是 解釋到 NO,所以沒(méi)必要在條件語(yǔ)句里面把它和其他值比較。同時(shí),不要直接把它和 YES 比較,因?yàn)?YES 的定義是 1, 而 BOOL 是 8 bit的,實(shí)際上是 char 類型。
同時(shí)這樣也能提高一致性,以及提升可讀性。
4. 黃金大道
在使用條件語(yǔ)句編程時(shí),代碼的左邊距應(yīng)該是一條“黃金”或者“快樂(lè)”的大道。 也就是說(shuō),不要嵌套 if 語(yǔ)句。使用多個(gè) return 可以避免增加循環(huán)的復(fù)雜度,并提高代碼的可讀性。因?yàn)榉椒ǖ闹匾糠譀](méi)有嵌套在分支里面,并且你可以很清楚地找到相關(guān)的代碼。
5. 復(fù)雜的表達(dá)式
當(dāng)你有一個(gè)復(fù)雜的 if 子句的時(shí)候,你應(yīng)該把它們提取出來(lái)賦給一個(gè) BOOL 變量,這樣可以讓邏輯更清楚,而且讓每個(gè)子句的意義體現(xiàn)出來(lái)。
6. 三元運(yùn)算符
三元運(yùn)算符 ? 應(yīng)該只用在它能讓代碼更加清楚的地方。 一個(gè)條件語(yǔ)句的所有的變量應(yīng)該是已經(jīng)被求值了的。