1. 程式人生 > >iOS -- Effective Objective-C 閱讀筆記 (7)

iOS -- Effective Objective-C 閱讀筆記 (7)

成對 format 開發 數據 清晰 rip 相同 命名法 定義

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)