iOSOC開發程式碼規範

1291731906826133發表於2016-11-29

 

1.變數、類名、函式名 使用駝峰命名法

2.儘量使用完整的單詞命名,儘量不採用 縮寫單詞

3.類名使用大寫字母打頭,字首統一加上HH 例如:HHHomePageController

4.類的成員變數使用 下劃線打頭, 例如_age

5.禁止在專案中的任何地方,包括檔名、目錄名、邏輯目錄名、專案名等地方使用空格或中文字元

6.為了不影響閱讀,一個方法中程式碼不要超過100行。一個類中程式碼不要超過600行, 有超過的再回頭重構的時候想辦法分解

7.每個.h檔案最開始處用簡短文字說明一下該類的功能

8.類中第___個功能模組以 #pragma mark – 分隔,上空兩行,下空一行

9.常用物件 命名採用字尾,如下 

UIView: View   例如:UICandidateView : viewCandidate;

UILabel: Lab 例如: UICopyLabel: labCopy;

UIButton: Btn 例如:  UISelectedButton:  btnSelected;

UIImage:  img      imgAvatar;

UIImageView:  imgViewAbc

UITextField:  textFiledName;

UITextView:  textViewEdit;

NSArray:  arrName;

NSMutableArray: mArrName;

NSDictionary: dictPosition;

NSMutableDictionary :MDictPosition;

NSString :strName;

NSMutableString :mStrName;

NSAttributedString :attributedStrName;

NSMutableAttributedString :mAttributedStrName;

 

10. 文件註釋格式如下

    /**

    方法或變數名說明

     @param 引數1說明 

     @param 引數2說明

     …

     @return 若方法有返回值,則對返回值進行說明

    */

12. 注意 常量和巨集的宣告

CGFloat cellHeight = 12.0f;

static CGFloat const cellHeight = 12.0f;

static NSString *const JumpNotificationName = @“JumpNotificationName”;

 

13.關於.h空行規定

13.1.檔案說明與標頭檔案包涵(#import)之間空1行

13.2.標頭檔案包涵(#import)之間如果需要分類區別,各類別之間空1行

13.3.標頭檔案包涵(#import)與@class之間空2行

13.4.@interface與@class之間空1行

13.5.標頭檔案{}裡面,空1行開始宣告成員物件,如果需要分類別,各類別之間空1行

13.6.{}外空一行開始書寫屬性,如果需要分類,各類別之間空1行

13.7.空1行書寫方法,如果各方法之間需要分類別,各類別之間空1行

13.8.方法完成之後,空1行@end

13.9.如果需要宣告protocal,空2行接著寫。通常protocal寫在@end後,但是宣告在@interface前,也可以另寫1個檔案

 

14.關於.m中空行的規定

14.1.檔案說明與標頭檔案包涵(#import)之間空1行

14.2.標頭檔案包涵(#import)之間如果需要分類區別,各類別之間空1行

14.3.@implementation和@synthesize之間空1行,@synthesize不要使用逗號(,)如果需要分類區別,各類別之間空1行

14.4.@synthesize與 法之間空2 

14.5.各方法之間空2行

 

15.方法裡面的空行 

15.1.方法名後空1行開始寫 

15.2.變數宣告後需要空1行,如果需要分類區別區分,各類別之間空1行

15.3.條件,迴圈,選擇語句,整個語句結束,需要空1行

15.4.各功能塊之間空1行

15.5.最後1個反括號之前不空

15.6.註釋與程式碼之間不空

15.7.#pragma mark與方法之間空1行

 

16關於空格

16.1.h中協議<>前 有1個空格

16.2.h中成員宣告時,型別與變數之間有少1個空格。星號(*)靠近變數,不靠近型別

16.3.@property後有1各空格,()裡面,逗號後面有1個空格,括號外面,先留1個空格,再宣告屬性

16.4.方法+,-後,與()之間有1個空格

16.5.返回型別與*之間有1個空格, 方法引數中返回型別與*之間有1個空格

16.6.多引數的方法,每個引數後都有1個空格

 

17.關於bool值

17.1.不要 if(obj==nil){},  if(!obj){}

17.2.比較時把常量放前 可以避免錯誤

17.3.不要 if(aBool==YES){},直接 if(aBool){} 或if(!!aBool){}

 

18.變數屬性名和其它

18.1.儘量在使用的時候才宣告變數,儘量少宣告全域性變數

18.2.變數名不要只使1個字 ,儘量能表明變數的意思

18.3.@synthesize和@dynamic,應該放在類實現的最上面,每一個宣告都單獨一行

18.4.協議protocol需要加#pragma marks-來區分

18.5.obj = nil; delegate也應該在dealloc裡面寫  delegate = nil;

 

19其它

19.1@interface與@implementation與import之間空1行

19.2屬性的宣告和實現,儘量避免書寫@synthesize,如果用到@synthesize,要緊接著@implementation書寫,不要換行

19.3成員變數儘量寫在@implementation內部,有必要對外暴露時,才寫在@interface下

19.4臨時變數的宣告,儘量賦初始值, eg: NSInteger a = 0;

19.5宣告多個臨時變數,必須另起一行,禁止書寫 int a = 3, b = 5;

19.6臨時變數的宣告語法寫完後,必須各行開始書寫邏輯程式碼,邏輯程式碼中可以穿插 臨時變數的宣告,同樣必須隔行書寫 

19.7遇到新的程式碼塊,必須隔行書寫。包括函式的實現,if, switch分支,while,do while,for迴圈等

19.8所有的程式碼塊必須用{}, 即只有1行的if程式碼也必須用{}, 

 if (success) {
         return YES; 

 }

19.9所有的二次元運算子,必須以空格隔開,如 x += 12, 不能寫成 x += 12;

19.10.所有的逗號後必須追加一個空格, 例如CGRectMake(12, 12, 43, 40);

19.11.儘量用NSInteger 取代int, 用NSUInteger 取代unsigned int


相關文章