iOS 開發(fā)編碼及命名規(guī)范

1.目的

統(tǒng)一規(guī)范XCode編輯環(huán)境下Objective-C的編碼風(fēng)格和標(biāo)準(zhǔn)

2.使用范圍

適用于所有用Objective-C語(yǔ)言開發(fā)的項(xiàng)目。

3.編碼規(guī)范

3.1、注釋

1)注釋可以采用’ /* */ ’和’ // ’兩種注釋符號(hào),涉及到多行注釋時(shí),盡量使用’ /* */ ’。

2)對(duì)于一行代碼的注釋可放在前一行及本行上,不允許放在下一行,更不允許在一行語(yǔ)句的

中間加入注釋。

3)單元文件的文件頭注釋說(shuō)明應(yīng)按如下格式:

//文件名

//工程名//

// ?Created by創(chuàng)建者on期.

// Copyright 2010 . All rights reserved.//

//系統(tǒng)名稱:

//功能描述:

//修改記錄:(僅記錄功能修改)

//????????????? 張三2012-02-02創(chuàng)建該單元

//????????????? 小明2010-03-02增加本地點(diǎn)單功能。

//

4)方法前 的注釋遵循以下格式:如果某項(xiàng)沒(méi)有,則以N/A表

例如:

/**********************************************************

函數(shù)名稱:-(BOOL)showFiveAndSixStairRoomCountByStatu

函數(shù)描述:顯示特定狀態(tài)下五樓和六樓的房間數(shù)

輸入?yún)?shù):(NSString *)statu:某狀態(tài)。

輸出參數(shù):(int *)roomCount:該狀態(tài)房間數(shù)量。

返回值:BOOL:操作是否成功。

**********************************************************/

- (void)ShowFiveAndSixStairRoomCountByStatu:(NSString *)staturoomCount:(int*)_roomCount;

/**********************************************************

函數(shù)名稱:-(NS UInteger)showF iveAndS ixS tairRoomCount

函數(shù)描述:顯示五樓六樓的房間數(shù)。

輸入?yún)?shù):N/ A

輸出參數(shù):N/ A

返回值:NSUInteger :房間數(shù)量。

**********************************************************/

- (NSUInteger)showFiveAndSixStairRoomCount

5)不必每 都加注釋,在3~10左右的段落做注釋要好于每 都做注釋,顯 易 的代碼不加注釋。

例如:

If (!returnValue)

{

NSLog(@”登錄失敗”);

}

3.3、編碼排版格式

1)代碼的縮進(jìn)應(yīng)使 空格(SPACE),不能使 制表符(TAB),并且縮進(jìn)以2個(gè)字符為單位。

2)中括弧的每 個(gè)括弧在源程序中要單獨(dú)占? 。例如

//不正確 法

for (int i = 0; i < 10 ; i++){

}

//正確用法

for (int i = 0; i < 10; i++)

{

......

}

3)空格的使

a)關(guān)鍵字與其后的表達(dá)式之間要有空格,如:

if ( expr )

for (expr)

b)單 操作符不應(yīng)與它們的操作數(shù)分開(如’!’和’^’等)。

c)除’ , ’外,其它雙目操作符應(yīng)與它們的操作數(shù)用空格隔開。

例如

i=i+1;//錯(cuò)誤的寫法,操作符兩端沒(méi)有空格

i = i + 1;//正確的寫法,

if(a>b)//錯(cuò)誤的寫法,邏輯判斷符號(hào)兩端沒(méi)有空格

if(a > b)//正確的寫法

d) .h中協(xié)議<>前面有一個(gè)空格。

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

f) @property后留1個(gè)空格,()里面,逗號(hào)緊跟前一變量,與后一變量之間留1個(gè)空

格。()外面,先留1個(gè)空格,再聲明屬性。

g)方法的+,-后面與()之間留1個(gè)空格。

h)返回類型與*之間留1個(gè)空格,方法參數(shù)中返回類型與*之間留1個(gè)空格。

i)在多參數(shù)方法中,每個(gè)參數(shù)后面都有1個(gè)空格。

4)每行只能有一個(gè)語(yǔ)句

例如

//不正確寫法

NSUInteger objectIndex, stuffCount;

objectIndex = objectIndex + 10, stuffCount = stuffCount + 20;

@synthesize MyView, MyLabelView;

//正確寫法

NSUInteger objectIndex;

NSUInteger stuffCount;

objectIndex = objectIndex + 10;

stuffCount = stuffCount + 20;

@synthesize MyView;

@synthesize MyLabelView;

5)關(guān)于空行

a) .h中的空行

、文件說(shuō)明與頭文件包含(#import)之間空1行

、頭文件包含(#import)之間,如果需要分類區(qū)別,各類別之間空1行。

、頭文件包含(#import)與@class之間空2行。

、@interface與@class之間空1行。

、頭文件{}里面,空1行開始聲明對(duì)象成員,如果需要分類區(qū)別,各類別之間空1

行。

、頭文件{}外,空1行書寫屬性,如果需要分類區(qū)別,各類別之間空1行。

、屬性下面空1行開始寫方法,如果需要分類區(qū)別,各類別之間空1行。

、方法完成后,空1行@end。

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

在@interface之前。

b) .m中的空行

、文件說(shuō)明與頭文件包含(#import)之間空1行

、頭文件包含(#import)之間,如果需要分類區(qū)別,各類別之間空1行。

、@implementation和@synthesize之間空1行,如果需要分類區(qū)別,各類別之間

空1行。

、@synthesize與方法之間空1行。

、方法與方法之間空1行。

C)方法里面的空行

、變量聲明后需要空1行,如果需要分類區(qū)別,各類別之間空1行。

、條件、循環(huán),選擇語(yǔ)句,整個(gè)語(yǔ)句結(jié)束,需要空1行。

、各功能快之間空1行。

、最后一個(gè)括弧之前不空行。

、注釋與代碼之間不空行。

、#pragma mark與方法之間空1行。

d)每行代碼最多不得操作100個(gè)字。設(shè)置如下:Xcode => Preferences => TextEditing

=> Page Guide at column /輸入100即可。

3.2、命名規(guī)范

3.2.1、保留字

Objective-c語(yǔ)言的保留字或關(guān)鍵詞應(yīng)全部使用小寫字母,除下表中保留字外,private、protected、public、在類型說(shuō)明中也作為保留字使用。還有nonatomanic,retain,readwrite,

readonly等也有特殊的使用場(chǎng)合。

_Bool,_Complex,_Imaginary,auto,break,bycopy,byref,case,char,const,continue

,default,do,double,else,enum,extern,float,for,goto,if,in,inline

,inout,int,long,oneway,out,register,restrict,return,self,short,signed,sizeof,static,

struct,super,switch,typedef,union,unsigned,void,volatile,while

3.2.2、方法

1)方法的名稱應(yīng)全部使用有意義的單詞組成,且以小寫字母開頭,多單詞組合時(shí),后面的單詞

首字母大寫。

例如:

-(void)getUserInformation......

2)設(shè)置類變量的內(nèi)容的方法應(yīng)使用set作為前綴,讀取變量的內(nèi)容的方法應(yīng)使用get作為前綴。

例如:

-(void)getUserName;

-(void)setUserName:(NSString *)userName;

3)方法中的參數(shù):第一個(gè)參數(shù)名稱要從函數(shù)名稱上攜帶出來(lái),第二個(gè)參數(shù)的首字母小寫,多個(gè)

單詞組合時(shí),后面單詞首字母大寫。參數(shù)有別名時(shí),參數(shù)別名與參數(shù)名一致,但參數(shù)名前綴

以_。參數(shù)別名與前一參數(shù)保留1個(gè)空格。參數(shù)無(wú)別名時(shí),以有意義的字母命名。

例如:

-(void)myFunctionWithSizeA:(CGSize)sizeA sizeB:(CGSize)_sizeB;

3.2.3、變量

1)變量必須起有意義的名字,使其他組員可以很容易讀懂變量所代表的意義,變量命名可以采

用同義的英文命名,可使用幾個(gè)英文單詞,第一個(gè)單詞首字母小寫,其他單詞首字母大寫。

例如:

NSString *username;

2)對(duì)于一些特殊類型的變量,命名時(shí)要帶上類型,如NSArray的變量命名為xxxArray,其他的

如xxxDictionary,xxxSize等。這樣就可以從名稱上知道是什么類型的變量。千萬(wàn)不能將

NS Array的變量命名為xxxDictionary。

3)對(duì)于要和interface builder關(guān)聯(lián)的的輸出口變量,命名時(shí)要后綴以特定的控件名。

例如:IBOutlet UILabel *userNameLabel;

4)對(duì)于使c語(yǔ) 形式聲明的變量, 些特定類型可采? 定的簡(jiǎn)寫:

例如:

指針類型:P

結(jié)構(gòu)體類型:Rec

數(shù)組類型:Arr

Core Graphic:CG等。

循環(huán)控制變量通常使 單 的字符如:i、j、k等。使 有意義的名字,如

objectIndex也是可以的。

5)盡量避免使 全局變量,如果必須使 全局變量則必須加前綴‘ Pub_’,同時(shí)應(yīng)在變量名稱中體現(xiàn)變量的類型。

6)私有實(shí)例變量前加一個(gè)下劃線,如_myPrivateVarible。

7)枚舉變量也要有相應(yīng)的前綴來(lái)區(qū)分不同的enum變量。比如蘋果公司的一個(gè)enum。

例如:

typedef enum CGPathDrawingMode CGPathDrawingMode;

/* Drawing modes for text. */

enum CGTextDrawingMode

{

kCGTextFill,

kCGTextStroke,

kCGTextFillStroke,

kCGTextInvisible,

kCGTextFillClip,

kCGTextStrokeClip,

kCGTextFillStrokeClip,

kCGTextClip

};

3.2.4、常量

1)避免在程序中直接出現(xiàn)常數(shù),使用超過(guò)一次的應(yīng)以宏定義的形式來(lái)替代。

2)常數(shù)的宏定義應(yīng)與它實(shí)際使用時(shí)的類型相一致。如以3.0來(lái)定義浮點(diǎn)類型,用3表示整型。

3)常量的命名應(yīng)當(dāng)能夠表達(dá)出它的用途,并且用大寫字母表示。

例如:#define PI 3.1415926

4)一些常量前加特殊前綴,可以作為不同常量的區(qū)分,

例如:

UserDefaultsKey的變量前加UDKEY_,

UserDefaultsKey的變量前加UDKEY_,

NotificationNameKey前面加NNKEY_,

DictionaryKey前面加DICTKEY_,

3.2.5、類

1)所有的類名,接口名(Protocol)均以大寫字母開頭,多單詞組合時(shí),后面的單詞首字

母大寫。類,接口名必須是有意義的。

2)繼承自UIView的類以View結(jié)尾。

例如:OperatorUsersInfomationView,LabelView等。

3)繼承自ViewController的類以viewController結(jié)尾。

例如:HomePageViewController,LoginViewController等。其他類推。

4)所有保存數(shù)據(jù)的實(shí)體以Model結(jié)尾。例如:

UserModel,

3.2.5、圖片

基本格式為:模塊描述+功能描述+其它描述

如下:

1)如公共模塊的圖片,以Common開頭

CommonDelete@2x.png

2)如通訊錄模塊的圖片,以ADB開頭

AdbAddGroup@2x.png

3.2.5、控件ID

基本格式為:控件類型+模塊描述+功能描述+其它描述

如下:

1)如通訊錄模塊的刪除群組按鈕ID名稱,可以使用以下命名

btnADBDeleteGroup

3.3、修改規(guī)范

3.5.1、新增代碼行

新增代碼行的前后應(yīng)有注釋行說(shuō)明。

//修改人,修改時(shí)間,修改說(shuō)明

新增代碼行

//修改結(jié)束

3.3.2、刪除代碼行

刪除代碼向的前后用注釋行說(shuō)明

//修改人,修改時(shí)間,修改說(shuō)明

要?jiǎng)h除的代碼行(將要?jiǎng)h除的語(yǔ)句進(jìn)行注釋)

//修改結(jié)束

3.3.3、修改代碼行

修改代碼行以注釋舊代碼行后再新增代碼行的方式進(jìn)行。

//修改人,修改時(shí)間,修改說(shuō)明

//修改前代碼行開始

//修改前代碼行

//修改前代碼行結(jié)束

//修改后代碼行開始修改后代碼行

//修改結(jié)束

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容