Cocoa代碼風(fēng)格指南之使用規(guī)范(四)

代碼使用規(guī)范實(shí)在太多,這里暫時(shí)列出部分。一些比較復(fù)雜的規(guī)范需要單獨(dú)說(shuō)明,列表如下。

  1. 整形數(shù)的使用規(guī)范
  2. 使用CGGeometry方法獲取CGRect數(shù)據(jù)
  3. 屬性?xún)?nèi)存管理相關(guān)修飾符的使用規(guī)范
  4. 屬性聲明在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

Github:github.com/xiaofei86

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

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

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