NO IMAGE

Objective-C編碼規範
1. 格式化程式碼
1.1. 指標(*)號的位置,與型別空一格,與變數名不空格
如:NSString *nameStr;
1.2. 類
@interface、@implementation和@end等前後各空一行
使用#pragma mark 分類註釋方法
使用#pragma mark – 分類方法組

1.3. 方法的宣告和定義
在 – OR 和返回值之間留 1 個空格,方法名和第一個引數間不留空格。
第一中括號不獨佔一行
當引數過長時,每個引數佔用一行,以冒號對齊。如:

– (void)doSomethingWith:(CGFloat)theFoo
rect:(NSString *)theRect
interval:(float)theInterval {
}
如果方法名比引數名短,每個引數佔用一行,至少縮排 4 個字元,且為垂直對齊(而非使用冒號對齊)。
– (void)short:(CGFloat)theFoo
longKeyword:(NSString *)theRect
evenLongerKeyword:(float)theInterval {
}
1.4. 方法呼叫
沿用宣告方法的習慣。
1.5. Protocal
型別標示符、代理名稱、尖括號間不留空格。類宣告、例項變數和方法宣告時亦是如此。
如果類宣告中包含多個protocal,每個protocal佔用一行,縮排4個字元。
2. 命名

2.1. 類名
使用大駝峰命名法
實現類不得使用字首,相同的字首影響可讀性
繼承UI元件時使用該UI名結尾
2.2. 方法名
使用小駝峰命名法
避免使用newXXX,getXXX,setXXX來命名
getter 的方法名和變數名應相同。不允許使用“get”字首。
– (id)getDelegate; // 禁止
– (id)delegate; // 推薦

查詢方法用query代替get 字首
如:- (UserInfo )getUserInfo{} 則用 – (UserInfo )queryUserInfo{}
2.3. 變數名
使用小駝峰命名法
系統常用類作為變數時加入字尾(字尾見附錄1)
變數名大小在 2~20 個字母,避免單字母變數,當變數單純作為整型迴圈變數時, 可以使用單個字母。
屬性變數使用m開頭
常量(#define, const 等)使用小寫“k”作為字首,首字母大寫來分割單詞。如:kInvalidHandle
避免使用newXXX,getXXX,setXXX來命名

列舉命名方式 用列舉名稱加名稱 的方式
如:列舉名稱叫PayType(支付方式),對應的支付方式有現金,pos支付,支付寶,微信支付等 則 typedef NS_ENUM(NSInteger,PayType){
PayTypeCash = 0, //現金支付
PayTypePos = 1, //pos支付

}
只使用有廣為人知含義的縮寫,如ip,http,msg等,不得私造縮寫
3. 註釋
3.1. 檔案註釋
在h檔案的@interface 前面寫明建立者,時間,以及該檔案的簡單描述
/**
* @author XXX, 16-06-06 15:06:52
*
* @brief 該類是一個學生類,繼承自使用者類
*/
@interface Student:User

@end
3.2. 方法註釋
/**
* @author XXX, 16-06-06 15:09:36
*
* @brief 方法描述
*
* @param 引數1
* @param 引數2
* @param 引數3
* @return 返回引數說明
*/
對應如果有返回值的方法,則有 * @return 返回引數說明,否則無
m檔案中則儘量使用使用 #pragma mark來為每個方法新增說明
3.3. 實現註釋
採用//進行 單行註釋。

所有邏輯判斷需要新增註釋說明。

所有變數、常量需要新增註釋說明。
4. 編碼規範
4.1. 初始化
沒必要在初始化方法裡把變數初始化為 0 或者 nil ,這是多餘的。所有新分配記憶體 的物件內容都初始化為 0(除了 isa ),所以不要在 init方法裡做無謂的重初始化為 0 的 操作。
4.2. 重寫系統方法時必須先呼叫super 方法

– (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];//必須寫,否則會造成記憶體洩漏
}
4.3. 保持公共方法的簡潔性和可讀性
保持h檔案的簡潔,私有屬性和方法不得定義在h檔案中。只讀屬性必須使用關鍵字readonly;
4.4. 使用框架根

import

import

ifdef DEBUG

define NSLog(fmt, …) NSLog((@”%s [Line: %d] ” fmt), PRETTY_FUNCTION, LINE, ##VA_ARGS);

else

define NSLog(…){}

endif

  1. 附錄一:縮寫
    型別 縮寫
    NSString Str
    NSMutableString MuStr
    NSDictionary Dict
    NSMutableDictionary MuDict
    NSArray Arr
    NSMutableArray MuArr
    NSData Data
    NSMutableData MuData
    UI元件 縮寫
    UILabel Label
    UIButton Btn
    UIImage Img
    UIImageView ImgView
    UITableView Table
    UITextView TextView
    UIFieldView FieldView
    UIScrollView ScrollView
    UIViewController VC
    UIView View
    UINavigationController Nav
    UINavigationBar NavBar

注:其他未標明型別儘量使用該型別去除字首後作為結尾

  1. 推薦使用外掛
    外掛管理器 – Alcatraz
    程式碼註釋外掛 – VVDocumenter
    按儲存時自動格式化程式碼外掛 – AutoIndentWithSave

  2. 感謝閱讀

根據我的開發經驗和編碼習慣所整理,目前公司是使用這套規範,如果你有更好的或者有什麼建議,歡迎向我提出,我會統一整理更新。我qq:643702008

10.直接從Word文件裡貼過來的,看word可能好看一點,這裡可以下載文件 《Objective-C編碼規範