ios 代碼編碼規(guī)范

一. ?面布局規(guī)范

1.1 ?面布局順序

?面布局按規(guī)定順序定義, 如果沒有省略,但其他內(nèi)容保持該順序統(tǒng)一實(shí)現(xiàn)

1. #import (先標(biāo)準(zhǔn)庫(kù)頭文件,再非標(biāo)準(zhǔn)庫(kù)頭文件)

2.文件內(nèi)部定義的宏

3.常量定義

4.變量(靜態(tài)變量/靜態(tài)常量)定義

5.屬性定義

6.方法實(shí)現(xiàn)

1.1.2 標(biāo)準(zhǔn)庫(kù)定義規(guī)范

系統(tǒng)標(biāo)準(zhǔn)庫(kù)用尖括號(hào)<>, 非標(biāo)準(zhǔn)庫(kù)用雙引號(hào)"", .h文件中建議多用@class示例:

#import//標(biāo)準(zhǔn)庫(kù)引用#import"WDUserModel"http://非標(biāo)準(zhǔn)庫(kù)引用

1.2 方法實(shí)現(xiàn)布局順序

遵循重要信息寫前面原則

代碼以

#pragma mark -模塊名區(qū)分

主體可如下區(qū)分模塊,但總體順序如下

#pragma mark - Initialize

#pragma mark - Life Circle

#pragma mark - Bind

#pragma mark - Action Method

#pragma mark - Delegate(or Datasource) Method

#pragma mark - Setup UI

#pragma mark - Lazy Loading

二. 命名規(guī)范

2.1 宏定義命名規(guī)范

宏命名以大寫單詞和下橫線_組成

所有單詞全部大寫,

單詞直接以下橫線_分割正確示例:

#define SCREEN_WIDTH [[UIScreen mainScreen] bounds].size.width

//屏幕寬度

錯(cuò)誤示例:

#define screenWidth [[UIScreen mainScreen] bounds].size.width //錯(cuò)誤:字母非全大寫,單詞不以_分割

2.2 靜態(tài)變量、靜態(tài)常量命名規(guī)范

靜態(tài)變量、靜態(tài)常量、全局變量 命名以k + 名組成, 聲明的名稱遵循駝峰命名法

正確示例:

static const NSString*kMyCellReuseID = @"kMyCellReuseID";錯(cuò)誤示例:

static const NSString*myCellReuseID = @"myCellReuseID";//錯(cuò)誤:不以字母k開頭

static const NSString*MyCellReuseID = @"MyCellReuseID";//錯(cuò)誤:不遵循駝峰命名法

2.3 成員變量命名規(guī)范

成員變量命名以 “下橫線_”開頭, 遵循駝峰命名法正確示例:

@interfaceWDHomeViewController()

{

????????NSString*_title;

}

@end

錯(cuò)誤示例:

@interfaceWDHomeViewController()

{

}

@end

NSString*title;

NSString*Type;

//錯(cuò)誤:不以下橫線_開頭//錯(cuò)誤:不遵循駝峰命名法

2.4 屬性命名規(guī)范屬性命名規(guī)范需遵循駝峰命名法

控件以對(duì)應(yīng)控件結(jié)尾, 如定義UIView控件, 則以view結(jié)尾, 定義UILabel,則

以label結(jié)尾

正確示例:

@property(nonatomic,strong) WDHomeViewModel *viewModel;

@property(nonatomic,strong)UILabel*titleLabel;

錯(cuò)誤示例:

@property(nonatomic,strong) WDHomeViewModel *ViewModel;//錯(cuò)

誤:不遵循駝峰命名法

@property(nonatomic,strong) WDHomeViewModel *VIEW_MODEL;//錯(cuò)

誤:錯(cuò)用宏定義規(guī)范

@property(nonatomic,strong) WDHomeViewModel *kViewModel;//錯(cuò)

誤:錯(cuò)用靜態(tài)常量(變量)規(guī)范

@property(nonatomic,strong)UILabel*title;//錯(cuò)誤,未以統(tǒng)一的標(biāo)識(shí)符結(jié)尾

@property(nonatomic,strong)UILabel*titleL;//錯(cuò)誤,未以統(tǒng)一

的標(biāo)識(shí)符結(jié)尾

2.5 方法命名規(guī)范

方法命名需遵循駝峰命名法取名簡(jiǎn)單, 讓人望文生義嚴(yán)禁使用拼音命名

示例:

insertObject:atIndex:好的命名

insert:at:不清晰;插入什么?“at”表示什么?

removeObjectAtIndex:好的命名

remove:不清晰:要移除什么?

2.6 文件統(tǒng)一命名規(guī)范

自定義view視圖, 以View結(jié)尾;

自定義Cell視圖, 以

Cell結(jié)尾;

自定義ViewController, 以ViewController結(jié)尾;

自定義Model, 以Model結(jié)尾;

自定義ViewModel, 以

ViewModel結(jié)尾.

...

三. 編碼格式規(guī)范3.1 指針類型編碼規(guī)范:

所有指針類型的變量或者常量 指針標(biāo)識(shí)*靠近變量或常量名正確

@property(nonatomic,strong,readonly, nullable)NSIndexPath*previouslyFocusedIndexPath;

錯(cuò)誤

@property(nonatomic,strong)UILabel* titleLabel;//錯(cuò)誤: *星

號(hào)靠UILabel

3.2 方法編碼格式規(guī)范:

方法編碼參考蘋果命名規(guī)范, 方法名后緊跟’:’,然后緊跟形參, 返回類

型’(‘與’-‘之間有一個(gè)空格

-[空格](返回值類型)方法名:(參數(shù)類型1)參數(shù)1[空格]名2:(參數(shù)類型2[空格]*)參數(shù)2;

正確

- (NSInteger)collectionView:(UICollectionView *)collectionView

numberOfItemsInSection:(NSInteger)section;

錯(cuò)誤

- (void)deployLoginInActionWithUserModel:

(WDUserModel*)userModel;//錯(cuò)誤:未遵循指針編碼規(guī)范, *)直接沒有空格-(void)deployLoginInActionWithUserModel:(WDUserModel*)userModel;//錯(cuò)誤:未遵循指針編碼規(guī)范, -(直接沒有空格

- (void)deployLoginInActionWithUserModel: (WDUserModel

*)userModel;//錯(cuò)誤:冒號(hào):和 左括號(hào)(直接有空格

- (void)deployLoginInActionWithUserModel:(WDUserModel *)

userModel;//錯(cuò)誤:變量名和右括號(hào))有空格

四. 換行規(guī)范4.1 方法名換行

*當(dāng)方法有多個(gè)參數(shù)導(dǎo)致方法名過?時(shí),使用換行使排版整?,冒號(hào)需對(duì)其示例:

- (id)initWithFrame:(NSRect)frameRect

????????????????????mode:(ind)aMode

????????????????????cellClass:(Class)factoryId

????????????????????numberOfRows:(int)rowsHigh

????????????????????numberOfColumns:(int)colsWide;

4.2 if-else 和 switch-case推薦if-else中 else if 換行, 方便注釋調(diào)試

推薦

if(index ==0) {

????????// code

}

else if{

????// codel

}

else{

// code

}

switch(cellType) {

caseWDCellTypeName1: {

// code

break;

}

caseWDCellTypeName1: {// code

break;

}

default;

break

}

五. 空行規(guī)范:

以下加重部分必須遵守

文件說明與頭文件包涵(#import)空1行。

@interface與@class之間空一行

頭文件{}里面,如果需要分類區(qū)別,各類別之間空1行;

方法完成后,空1行@end

如果需要聲明protocal,空2行接著寫。通常protocal寫在@end后面,但是聲明在

@interface前面,也可以另寫一個(gè)文件。

@synthesize與方法之間空2行。

@implementation和@synthesize之間空一行,@synthesize不要使用逗號(hào)

(,)如果需要分類區(qū)別,各類別之間空1行

各方法之間空1或2行:

若空1行,則#pragma mark - 與上一個(gè)方法}空2行;

若空2行, 則#pragma mark - 與上一個(gè)方法}空3行

六. 空格規(guī)范:

1.一元操作符如“!”、“~”、“++”、“?”、“*”、“&”(地址運(yùn)算符)等前后不

加空格。“[]”、“.”、“->”這類操作符前后不加空格

!bValue

~iValue

++iCount

*strSource

&fSum

aiNumber[i] = 5;

tBox.dWidth

tBox->dWidth

2.多元運(yùn)算符和它們的操作數(shù)之間需要一個(gè)空格

fValue= fOldValue;iNumber+= 2;

3.關(guān)鍵字之后要留空格

if、for、while等關(guān)鍵字之后應(yīng)留一個(gè)空格再跟左括號(hào)‘(’,以突出關(guān)鍵字。

4..h中成員聲明時(shí),類型與變量之間有至少1各空格。星號(hào)(*)靠近變量,不靠近類

型。(部分習(xí)慣,所有變量可以以*對(duì)?,中間留空)

NSString *titleName;intviewIndex;

5.方法名與形參不能留空格,返回類型與方法標(biāo)識(shí)符有一個(gè)空格。

方法名后緊跟’:’,然后緊跟形參, 返回類型’(‘與’-‘之間有一個(gè)空格。

- (NSInteger)collectionView:(UICollectionView *)collectionView

numberOfItemsInSection:(NSInteger)section;

6.@property后有1各空格,()里面,逗號(hào)后有1個(gè)空格,括號(hào)外,先留1個(gè)空格,再聲明

屬性

@property(strong,nonatomic)UIWindow*window;

七. 注釋規(guī)范:

7.1 注釋類型:文檔注釋, 三橫線 或者 三星號(hào)

///注釋內(nèi)容

/**

注釋內(nèi)容

*/

普通注釋, 雙斜線 或者 雙星號(hào)

//注釋內(nèi)容

/*

注釋內(nèi)容

*/

7.2 注釋規(guī)范:

.h中 @interface 必須寫文檔注釋, 標(biāo)明該類作用

///用戶數(shù)據(jù)全局上下文

@interfaceWDHomeViewController:UIViewController@end

/**

用戶數(shù)據(jù)全局上下文

*/

@interfaceWDHomeViewController:UIViewController

@end

.h中所有屬性和方法必須寫注釋

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容