編寫(xiě)高質(zhì)量iOS與OS X代碼的52個(gè)有效方法
第3章 接口與API設(shè)計(jì)
15.用前綴避免命名空間沖突
- 選擇與你的公司、應(yīng)用程序或者二者皆有關(guān)聯(lián)之名作為類(lèi)名的前綴,并在所有代碼中均使用這一前綴。
- 若自己所開(kāi)發(fā)的程序庫(kù)中用到了第三方庫(kù),則應(yīng)為其中的名稱(chēng)加上前綴。
16.提供“全能初始化方法”
- 在類(lèi)中提供一個(gè)全能初始化方法,并于文檔里指明。其他初始化方法均應(yīng)調(diào)用此方法。
- 若全能初始化方法與超類(lèi)不同,則需覆寫(xiě)超類(lèi)中的對(duì)應(yīng)方法。
- 如果超類(lèi)的初始化方法不適用于子類(lèi),那么應(yīng)該覆寫(xiě)這個(gè)超類(lèi)方法,并在其中拋出異常。
17.實(shí)現(xiàn)description方法
- 實(shí)現(xiàn)description方法返回一個(gè)有意義的字符串,用以描述該實(shí)例。
- 若想在調(diào)試時(shí)打印出更詳盡的對(duì)象描述信息,則應(yīng)實(shí)現(xiàn)debugDescription方法。
18.盡量使用不可變對(duì)象
- 盡量創(chuàng)建不可變的對(duì)象。
- 若某屬性?xún)H可用于對(duì)象內(nèi)部修改,則在“class-continuation分類(lèi)”中將其由readonly屬性擴(kuò)展為readwrite屬性。
- 不要把可變的collection作為屬性公開(kāi),而應(yīng)提供相關(guān)方法,以此修改對(duì)象中的可變collection。
19.使用清晰而協(xié)調(diào)的命名方式
- 起名時(shí)應(yīng)遵從標(biāo)準(zhǔn)的Objective-C命名規(guī)范,這樣創(chuàng)建出來(lái)的接口更容易為開(kāi)發(fā)者所理解。
- 方法名要言簡(jiǎn)意賅,從左至右讀起來(lái)要像個(gè)日常用語(yǔ)中的句子才好。
- 方法名里不要使用縮略后的類(lèi)型名稱(chēng)。
- 給方法起名時(shí)的第一要?jiǎng)?wù)就是確保其風(fēng)格與你自己的代碼或所要集成的框架相符。
20.為私有方法名加前綴
- 給私有方法的名稱(chēng)加上前綴,這樣可以很容易的將其同公共方法區(qū)分開(kāi)。
- 不要單用一個(gè)下劃線(xiàn)做私有方法的前綴,因?yàn)檫@種做法是預(yù)留給蘋(píng)果公司用的。
21.理解 Objective-C錯(cuò)誤模型
- 只有發(fā)生了可使整個(gè)應(yīng)用程序崩潰的嚴(yán)重錯(cuò)誤時(shí),才應(yīng)使用異常。
- 在錯(cuò)誤不那么嚴(yán)重的情況下,可以指派委托方法(delegate method)來(lái)處理錯(cuò)誤,也可以把錯(cuò)誤信息放在NSError對(duì)象里,經(jīng)由“輸出參數(shù)”返回給調(diào)用者。
22.理解 NSCopying協(xié)議
- 若想令自己所寫(xiě)的對(duì)象具有拷貝功能,則需實(shí)現(xiàn)NSCopying協(xié)議。
- 如果自定義的對(duì)象分為可變版本和不可變版本,那么就要同時(shí)實(shí)現(xiàn)NSCopying與NSMutableCopying協(xié)議。
- 復(fù)制對(duì)象時(shí)需決定采用淺拷貝還是深拷貝,一般情況下應(yīng)盡量執(zhí)行淺拷貝。
- 如果你所寫(xiě)的對(duì)象需要深拷貝,那么可考慮新增一個(gè)專(zhuān)門(mén)執(zhí)行深拷貝的方法。