iOS開(kāi)發(fā)代碼規(guī)范

1. 關(guān)于命名

1.1 統(tǒng)一要求

含義清楚航背,盡量做到不需要注釋也能了解其作用衡载,若做不到爱榕,就加注釋

使用全稱(chēng)弃舒,不適用縮寫(xiě)

1.2 類(lèi)的命名

大駝峰式命名:每個(gè)單詞的首字母都采用大寫(xiě)字母

1例子:MFHomePageViewController

后綴要求

a.ViewController: 使用ViewController做后綴

1例子:?MFHomeViewController

b.View: 使用View做后綴

1例子:?MFAlertView

c.UITableCell:使用Cell做后綴

1例子:?MFNewsCell

d.Protocol: 使用Delegate或者DataSource作為后綴

1例子:?UITableViewDelegate

1.3 私有變量

小駝峰式命名:第一個(gè)單詞以小寫(xiě)字母開(kāi)始臊诊,后面的單詞的首字母全部大寫(xiě)

1例子:firstName鸽粉、lastName

以 _ 開(kāi)頭,第一個(gè)單詞首字母小寫(xiě)

1例子:NSString?*?_somePrivateVariable

私有變量放在 .m 文件中聲明

1.4 property變量

小駝峰式命名

例子:///注釋

@property?(nonatomic,?copy)?NSString?*userName;

禁止使用synthesize關(guān)鍵詞

1.5 宏命名

全部大寫(xiě)抓艳,單詞間用 _ 分隔触机。[不帶參數(shù)]

1例子:?#define?THIS_IS_AN_MACRO?@"THIS_IS_AN_MACRO"

以字母 k 開(kāi)頭,后面遵循大駝峰命名玷或。[不帶參數(shù)]

例子:#define?kWidth?self.frame.size.width

小駝峰命名儡首。[帶參數(shù)]

1#define?getImageUrl(url)?[NSURL?URLWithString:[NSString?stringWithFormat:@"%@%@",kBaseUrl,url]]

1.6 Enum

Enum類(lèi)型的命名與類(lèi)的命名規(guī)則一致

Enum中枚舉內(nèi)容的命名需要以該Enum類(lèi)型名稱(chēng)開(kāi)頭

例子:

typedef?NS_ENUM(NSInteger,?AFNetworkReachabilityStatus)?{

AFNetworkReachabilityStatusUnknown?=?-1,

AFNetworkReachabilityStatusNotReachable?=0,

AFNetworkReachabilityStatusReachableViaWWAN?=1,

AFNetworkReachabilityStatusReachableViaWiFi?=2

};

1.7 Delegate命名

類(lèi)的實(shí)例必須為回調(diào)方法的參數(shù)之一

1例子:-(NSInteger)tableView:(UITableView*)tableView?numberOfRowsInSection:(NSInteger)section

回調(diào)方法的參數(shù)只有類(lèi)自己的情況,方法名要符合實(shí)際含義

例子:

-(NSInteger)numberOfSectionsInTableView:(UITableView*)tableView

以類(lèi)的名字開(kāi)頭(回調(diào)方法存在兩個(gè)以上參數(shù)的情況)以表明此方法是屬于哪個(gè)類(lèi)的

1例子:-(UITableViewCell*)tableView:(UITableView*)tableView?cellForRowAtIndexPath:(NSIndexPath?*)indexPath

使用did和will通知Delegate已經(jīng)發(fā)生的變化或?qū)⒁l(fā)生的變化

例子:

a.-(NSIndexPath*)tableView:(UITableView*)tableView?willSelectRowAtIndexPath:(NSIndexPath*)indexPath;

b.-(void)tableView:(UITableView*)tableView?didSelectRowAtIndexPath:(NSIndexPath*)indexPath;

2. 私有方法及變量聲明

2.1 聲明位置

在.m文件中最上方偏友,定義空的category進(jìn)行聲明

例子:

#import"CodeStandardViewController.h"

//?在這個(gè)category(類(lèi)目)中定義變量和方法

@interfaceCodeStandardViewController?(){

//?聲明私有變量

}

//?私有方法

-?(void)samplePrivateMethod;

@end

@implementation?CodeStandardViewController

//?私有方法的實(shí)現(xiàn)

-?(void)samplePrivateMethod

{

//some?code

}

3.關(guān)于注釋

最好的代碼是不需要注釋的 盡量通過(guò)合理的命名

良好的代碼把含義表達(dá)清楚 在必要的地方添加注釋

注釋需要與代碼同步更新

如果做不到命名盡量的見(jiàn)名知意的話(huà)蔬胯,就可以適當(dāng)?shù)奶砑右恍┳⑨尰蛘適ark

3.1 屬性注釋

例子:

///?學(xué)生

@property?(nonatomic,?strong)?Student?*student;

3.2 方法聲明注釋

/**

*?@brief?登錄驗(yàn)證

*

*?@param?personId?用戶(hù)名

*?@param?password?密碼

*?@param?complete?執(zhí)行完畢的block

*

*?@return

*/

+?(void)loginWithPersonId:(NSString?*)personId?password:(NSString?*)password?complete:(void(^)(CheckLogon?*result))complete;

4.關(guān)于UI布局

使用Interface Builder進(jìn)行界面布局

Xib文件的命名與其對(duì)應(yīng)的.h文件保持相同

Xib文件中控件的組織結(jié)構(gòu)要合理,Xib文件中控件需要有合理的可讀性強(qiáng)的命名位他,方便他人理解

5.格式化代碼

5.1 指針 "*" 位置

定義一個(gè)對(duì)象時(shí)氛濒,指針 "*" 靠近變量

1例子:?NSString?*userName;

5.2 方法的聲明和定義

在- 产场、+和返回值之間留一個(gè)空格,方法名和第一個(gè)參數(shù)之間不留空格

1-?(id)initWithNibName:(NSString?*)nibNameOrNilbundle:(NSBundle?*)nibBundleOrNil{...}

5.3 代碼縮進(jìn)

使用 xcode 默認(rèn)縮進(jìn)泼橘,即 tab = 4空格

使用 xcode 中 re-indent 功能定期對(duì)代碼格式進(jìn)行整理

相同類(lèi)型變量聲明需要獨(dú)行聲明

例子:

CGFloatoringX?=?frame.origin.x;

CGFloatoringY?=?frame.origin.y;

CGFloatlineWidth?=?frame.size.width;

Method與Method之間空一行

例子:

#pragma?mark?-privatemethods

-?(void)samplePrivateMethod

{...}

-?(void)sampleForIf

{...}

5.4 對(duì)method進(jìn)行分組

使用 #pragma mark - 方式對(duì)類(lèi)的方法進(jìn)行分組

例子:

#pragma?mark?-privatemethods

-?(void)samplePrivateMethod

{...}

-?(void)sampleForIf

{...}

-?(void)sampleForWhile

{...}

-?(void)sampleForSwitch

{...}

-?(void)wrongExamples

{...}

#pragma?mark?-publicmethods

-?(void)samplePublicMethodWithParam:(NSString*)sampleParam

{...}

#pragma?mark?-?life?cycle?methods

-?(id)initWithNibName:(NSString?*)nibNameOrNil?bundle:(NSBundle?*)nibBundleOrNil

{...}

-?(void)viewDidLoad

{...}

-?(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{...}

5.5 大括號(hào)寫(xiě)法

對(duì)于類(lèi)的method: 左括號(hào)另起一行寫(xiě)(遵循蘋(píng)果官方文檔)

例子:

-?(id)initWithNibName:(NSString?*)nibNameOrNilbundle:(NSBundle?*)nibBundleOrNil

{

self?=?[superinitWithNibName:nibNameOrNil

bundle:nibBundleOrNil];

if(self)?{

//?Custom?initialization

}

returnself;

}

對(duì)于其他使用場(chǎng)景: 左括號(hào)跟在第一行后邊

例子:

-?(void)sampleForIf

{

BOOL?someCondition?=?YES;

if(someCondition)?{

//?do?something?here

}

}

-?(void)sampleForWhile

{

inti?=0;

while(i?<10)?{

//?do?something?here

i?=?i?+1;

}

}

-?(void)sampleForSwitch

{

SampleEnum?testEnum?=?SampleEnumTwo;

switch(testEnum)?{

caseSampleEnumUndefined:{

//?do?something

break;

}

caseSampleEnumOne:{

//?do?something

break;

}

caseSampleEnumTwo:{

//?do?something

break;

}

default:{

NSLog(@"WARNING:?there?is?an?enum?type?not?handled?properly!");

break;

}

}

任何需要寫(xiě)大括號(hào)的部分涝动,不得省略

錯(cuò)誤示例:

-?(void)wrongExamples

{

BOOLsomeCondition?=?YES;

if(someCondition)

NSLog(@"this?is?wrong!!!");

while(someCondition)

NSLog(@"this?is?wrong!!!");

}


注:以上摘自?http://www.code4app.com/blog-847095-1513.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市炬灭,隨后出現(xiàn)的幾起案子醋粟,更是在濱河造成了極大的恐慌,老刑警劉巖重归,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件米愿,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鼻吮,警方通過(guò)查閱死者的電腦和手機(jī)育苟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)椎木,“玉大人违柏,你說(shuō)我怎么就攤上這事∠阕担” “怎么了漱竖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)畜伐。 經(jīng)常有香客問(wèn)我馍惹,道長(zhǎng),這世上最難降的妖魔是什么玛界? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任万矾,我火速辦了婚禮,結(jié)果婚禮上慎框,老公的妹妹穿的比我還像新娘良狈。我一直安慰自己,他們只是感情好笨枯,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布薪丁。 她就那樣靜靜地躺著,像睡著了一般猎醇。 火紅的嫁衣襯著肌膚如雪窥突。 梳的紋絲不亂的頭發(fā)上努溃,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天硫嘶,我揣著相機(jī)與錄音,去河邊找鬼梧税。 笑死沦疾,一個(gè)胖子當(dāng)著我的面吹牛称近,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哮塞,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼刨秆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了忆畅?” 一聲冷哼從身側(cè)響起衡未,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎家凯,沒(méi)想到半個(gè)月后缓醋,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绊诲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年送粱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掂之。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡抗俄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出世舰,到底是詐尸還是另有隱情动雹,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布冯乘,位于F島的核電站洽胶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏裆馒。R本人自食惡果不足惜姊氓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喷好。 院中可真熱鬧翔横,春花似錦、人聲如沸梗搅。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)无切。三九已至荡短,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哆键,已是汗流浹背掘托。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留籍嘹,地道東北人闪盔。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓弯院,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親泪掀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子听绳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

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

  • 前 言 需求是暫時(shí)的,只有變化才是永恒的异赫,面向變化編程椅挣,而不是面向需求編程。 不要過(guò)分追求技巧塔拳,降低程序的可讀性贴妻。...
    不懂后悔閱讀 1,513評(píng)論 0 49
  • 1. 關(guān)于命名 1.1 統(tǒng)一要求 含義清楚,盡量做到不需要注釋也能了解其作用蝙斜,若做不到名惩,就加注釋 使用全稱(chēng),不適用...
    福將的逆襲閱讀 196評(píng)論 0 0
  • 1. 關(guān)于命名 1.1 統(tǒng)一要求 含義清楚孕荠,盡量做到不需要注釋也能了解其作用娩鹉,若做不到,就加注釋 使用全稱(chēng)稚伍,不適用...
    軟件iOS開(kāi)發(fā)閱讀 152評(píng)論 0 0
  • 關(guān)于命名1> 統(tǒng)一要求含義清楚弯予,盡量做到不需要注釋也能了解其作用,若做不到个曙,就加注釋使用全稱(chēng)锈嫩,不使用縮寫(xiě) 2> 類(lèi)...
    the宇亮閱讀 279評(píng)論 0 0
  • 1. 關(guān)于命名 1.1 統(tǒng)一要求 含義清楚,盡量做到不需要注釋也能了解其作用垦搬,若做不到呼寸,就加注釋 使用全稱(chēng),不適用...
    wei_j閱讀 414評(píng)論 0 2