1. 程式人生 > >【Objective-C】 OC編碼規範

【Objective-C】 OC編碼規範

  • UserModel 的命名方式不太好。Model 是設計模型中的概念,不應該將其命名到具體的程式碼物件中,而且型別必須要有字首,防止命名衝突,此處命名字首取 BDK(Bai Du Knows)。
  • : 和 NSObject 之間要有空格。
  • 屬性定義的地方 property / 括號 / 型別 / 變數名 之間應該要有空格,此外符號 `是和變數名緊貼。如@property (nonatomic, copy) NSString* name;` 就是一個不太好的命名習慣。
  • 括號內的修飾詞按需按一定順序排列,兩個修飾詞間的逗號後面應當有空格。具體的順序沒有硬性規定,我的習慣是 nonatomic 放前面,因為多數的屬性修飾詞都是 nonatomic,而其他修飾詞卻不一定一樣,把 nonatomic 放前面看起來比較整齊。
  • NSString 型別變數用 copy 修飾比較安全。
  • 屬性的類最好對齊。這點不知道算不算槽點,但對齊更好看(看下面的程式碼 NSString *userName; 和下面兩行對齊)。
  • 屬性 age 是非負整數,所以使用 int 不太好,而且最好不要使用 C 的型別,應該用 NSUInteger。
  • 方法本身的間隔類似的,參照下系統方法的命名,具體就不多說了,看我最終的程式碼間隔即可。
  • doLogIn 槽點太多:
    • 兩個動詞表示一個登入的意思,累贅不合理;
    • login 本身就是一個動詞,如果非要拆開,應該是 logOn/logOff,而非 logIn;
    • 登入介面竟然沒有引數。我使用了 NSDictionary 可以將所有登入需要的資訊全放在裡面,便於擴充套件和修改。
    • 登入方法沒有返回值,無法瞭解登入情況,所以如果有個回撥會更好。
  • 初始化方法的槽點也挺多:
    • 方法名中的 Model 和之前提到的問題一致;
    • 方法有返回值,所以方法名的開頭應當是返回內容的名詞形式,而非動詞;
    • 根據方法名的意思推測,返回值應該是使用者資訊。既如此,應該直接用 BDKUserInfo 作為返回值型別。但也有可能這麼做有其他用意,所以為了尊重原始碼的意思,我還是將返回值設為 instancetype,返回一個關聯型別。