- Cocoa代碼風(fēng)格指南之命名規(guī)范(一)
- Cocoa代碼風(fēng)格指南之排版規(guī)范(二)
- Cocoa代碼風(fēng)格指南之注釋規(guī)范(三)
- Cocoa代碼風(fēng)格指南之使用規(guī)范(四)
代碼使用規(guī)范實(shí)在太多,這里暫時(shí)列出部分。一些比較復(fù)雜的規(guī)范需要單獨(dú)說(shuō)明,列表如下。
- 整形數(shù)的使用規(guī)范
- 使用CGGeometry方法獲取CGRect數(shù)據(jù)
- 屬性?xún)?nèi)存管理相關(guān)修飾符的使用規(guī)范
- 屬性聲明在implementation與extension的使用規(guī)范
- [Apple] :Apple 明確給出建議
- [Google] :Google 明確給出建議
- [General] :通用做法(主觀)
簡(jiǎn)單使用規(guī)范 [Google]
不要在 init 方法中,將成員變量初始化為 0 或者 nil。毫無(wú)必要。
僅需要使用 [[Class alloc] init] 來(lái)生成對(duì)象時(shí),才可以使用 new 來(lái)代替。
Google 在 MRC 下的建議是“不要使用 NSObject 類(lèi)方法 new,也不要在子類(lèi)中重載它”,理由是"由于類(lèi)方法 new 很少使用,這使得有關(guān)內(nèi)存分配的代碼審查更困難"。由于在 ARC 下無(wú)需擔(dān)心內(nèi)存管理的問(wèn)題,所以在僅需要 [[Class alloc] init] 時(shí)也可以使用 new 來(lái)代替。保持公共 API 簡(jiǎn)單。避免 “廚房水槽(kitchen-sink)” 式的 API。如果一個(gè)函數(shù)壓根沒(méi)必要公開(kāi),就不要這么做。用私有類(lèi)別保證公共頭文件整潔。
當(dāng)包含一個(gè)使用 Objective-C、Objective-C++ 的頭文件時(shí),使用 #import 。當(dāng)包含一個(gè)使用標(biāo)準(zhǔn) C、C++ 頭文件時(shí),使用 #include。頭文件應(yīng)該使用 #define 保護(hù)。
字符串應(yīng)使用 copy 屬性。
接受 NSString 作為參數(shù)的 setter,應(yīng)該總是 copy 傳入的字符串。
使用 nil 的檢查來(lái)檢查應(yīng)用程序的邏輯流程,而不是避免崩潰。Objective-C 運(yùn)行時(shí)會(huì)處理向 nil 對(duì)象發(fā)送消息的情況。
Objective-C 的方法標(biāo)識(shí)符中,只使用 BOOL。
不要直接比較 YES/NO 和 BOOL 變量。不僅僅因?yàn)橛绊懣勺x性,更重要的是 BOOL 為無(wú)符號(hào)字符型,這樣比較的結(jié)果可能與你預(yù)期的不同。
BOOL great = [foo isGreat];
if (great == YES) // 錯(cuò)誤
if (great) // 正確
- 只運(yùn)行在 iOS 下的代碼,優(yōu)先考慮使用自動(dòng) synthesize 實(shí)例變量。
博客:xuyafei.cn
簡(jiǎn)書(shū):jianshu.com/users/2555924d8c6e
微博:weibo.com/xuyafei86