標籤:類型 代碼 命名 建立 ret 方式 編程 不可變 title
1: 實現 description 方法
NSlog 在輸出自訂的類時, 只輸出了 類名 和 對象的記憶體位址. 要想輸出更為有用的資訊也很簡單, 只需要覆寫 description 方法並將描述此對象的字串 返回即可.
- (NSString*)description{
return xxxxxxx;
}
有個簡單的辦法, 可以在 description 中輸出很多互不相同的資訊, 那就是藉助 NSDictionary 類的 description 方法.
- (NSString *)description{
return [NSString stringWithFormat:@"%@",@{@"title: _title, @"age":@(_age)"}];
}
NSObject 協議中還有一個方法 debugDescription , 此方法的用意與 description 非常相似, 二者的區別在於, debugDescription 方法是開發人員在調試器中以控制台命令 列印對象時才調用的. 在 NSObject 的預設實現中, 此方法只是直接調用了 description
使用方法, 我們在建立執行個體所用的代碼後面插入斷點, 然後通過調試器, 使其暫停於此, 當程式運行到斷點時, 開發人員就可以向調試器控制台中輸入命令了,
‘po‘ 命令, 可以完成對象列印的 (prient-object) 工作.
同樣, 你也可以覆寫 debugDescription 的方法, 使其更合你意.
總結:
實現 description 方法返回一個有意義的字串, 用以描述該執行個體
若想在調試時列印出更詳細的對象描述, 則應實現 debugDescription 方法, ‘po‘ 命令, 列印對象
2: 盡量使用不可變對象
設計類的時候, 應充分運用屬性來封裝資料. 而在使用屬性時, 則可將其生命為 ‘唯讀‘. 預設情況下, 屬性是 ‘可讀可寫的‘, 這樣設計出來的類都是 ‘可變的‘. 不過, 一般情況下,我們要建模的資料未必需要改變.
具體到編程實踐中,則盡量把對外公布出來的屬性設為唯讀, 而且在只有卻又必要的時候對外公布.
總結:
盡量建立不可變的對象
3: 使用清晰而協調的命名方式
盡量使用 ‘駝峰式大小寫命名法‘
方法命名 長度要適中, 表達清晰, 且言簡意賅.
給方法命名時的注意事項
(1) 如果方法的傳回值是新建立的, 那麼方法名的首個詞應是傳回值的類型, 除非前面還有修飾語.屬性的存取方法不遵循這種命名方式. 屬性的存取方法應該按照其對應的屬性來命名.
(2) 應該把表示參數類型的名詞放在參數前面.
(3) 如果方法要在當前對象上執行操作. 那麼就應該 包含動詞, 若執行操作時還需要參數. 則應該在動詞後面加上 一個 或多個名詞.
(4) 不要使用 str 這樣的簡稱, 而應該使用 String 這樣的全稱.
(5) Boolen 屬性應加上 is 首碼, 如果某方法返回非屬性的 Boolean 值, 那麼應該根據其功能, 選用 has 或 is 當首碼.
(5) 將 get 這個首碼 留給那些 藉由 ‘ 輸出參數‘ 來儲存傳回值的方法.
類與協議的命名
應該為類與協議的名稱加上首碼, 以避免命名空間衝突. 而且應該像給方法起名時那樣吧詞句組織好, 使其從左至右讀起來較為通順.
類 與 協議的命名慣例, 命名方式應該協調一致.
總結:
起名時應遵循從標準的 OC 命名規範
方法名要言簡意賅, 從左至右讀起來順暢
方法名裡不要使用縮減後的類型名稱
為私人方法命名規範
以 ‘p_‘ 開頭命名私人方法, 這樣容易區分
不要但用一個底線 ‘_‘ 做私人方法的首碼, 因為這種方法是預留給蘋果公司的.
iOS -- Effective Objective-C 閱讀筆記 (7)