2016-04-12 13:28:32 1470瀏覽
在開發(fā)過程中,我們不僅要去看別人的代碼,也要讓別人看我們的代碼。那么,有一個良好的編碼習(xí)慣將會非常重要。下面一起來看一下關(guān)于使用Objective-C來開發(fā)iOS程序的編碼建議吧。
1、任意函數(shù)長度不得超過50行。(其實很容易就超過50行,這就要考慮代碼抽取了。
2、任意行代碼不能超過80字符。(其實也很容易超過80字符,可以考慮多行顯示,比如有多個參數(shù)時,可以每個參數(shù)放一行。)可以在Xcode中設(shè)置超過80個字符的提醒,選中“Page guide at column”.設(shè)置完之后就會在代碼80個字符處有一條豎線。
3、在每個方法的定義前留白一行,也就是在方法和方法之間留空一行。
4、功能相近的方法要放在一起,并推薦使用#pragma mark來導(dǎo)航代碼,切分代碼塊。這樣可以方便函數(shù)的查找。并且可以使用快捷鍵control+6 來快速查找方法的位置。
5、二元運(yùn)算符和參數(shù)之間要有一個空格,如賦值號=左右各留一個空格。self.myString = @"235423rew523452345";
6、一元運(yùn)算符和參數(shù)之間不放置空格,比如!非運(yùn)算符,&按位與,|按位或。BOOL isOpen = true;BOOL isClose = !isOpen;
7、強(qiáng)制類型轉(zhuǎn)換和參數(shù)之間不放置空格。NSString*str3 = (NSString*)self.myString;
8、長的變量值應(yīng)該拆分為多行。尤其體現(xiàn)在使用數(shù)組或者字典。以下也分別是快速聲明數(shù)組@[]和字典@{}的方法。
NSArray *array = @[@"111",@"2222222222",@"3333333",@"wwwwwwwwwwww"];
NSDictionary *dict = @{@"name":@"jack",@"age":@"20",@"gender":@"female",@"isMarried":@"false"};
9、 盡量使用有意義的名字命名,拒絕使用i,j等無意義字符命名。類的命名首字母大寫,其他變量的命名首字符小寫,并使用駝峰式分割單詞。
10、盡量減少在代碼中直接使用數(shù)字常量,而使用宏定義等方式。如:MAX_NUMBER_PHONE替代8等等。這樣我們搜索也比較方便。
11、盡量減少代碼中的重復(fù)計算,比如代碼中多處要使用屏幕寬度,然后計算:[[UIScreenmainScreen] bounds].size.width ,很多次,閑得很繁瑣,代碼也冗長。不如直接宏定義:
#defineSCREEN_WIDTH([[UIScreen mainScreen]bounds].size.width)
12、宏定義全部字母大寫。
13、函數(shù)長度不要超過50行,小函數(shù)比大函數(shù)可讀性更強(qiáng)。函數(shù)的參數(shù)不宜過多,零元函數(shù)最好,一元函數(shù)也不錯,高于三元的函數(shù)虛重構(gòu)。
14、合理范圍內(nèi)使用鏈?zhǔn)骄幊蹋篘SString *myName = [[NSString alloc] init];但是嵌套不宜超過3層,超過3層需進(jìn)行重構(gòu)。
15、函數(shù)調(diào)用時所有參數(shù)在同一行。如果參數(shù)過多,則可以每行一個參數(shù),每個參數(shù)以冒號對齊。
16、 對傳入?yún)?shù)的保護(hù)或者說是否為空的判斷,盡量不要使用if(!obj),而使用NSAssert斷言來處理。NSAssert是系統(tǒng)定義的宏。NSAssert(myName!= nil, @"myName參數(shù)為空"),如果條件判斷為真,則程序繼續(xù)執(zhí)行;如果判斷條件為假,則拋出異常,異常內(nèi)容為后面定義的字符串;
17、方法參數(shù)名前一般使用"an","the","new"來進(jìn)行修飾。如:-(void)setPersonInfo:(NSString*)theID theName:(NSString*)theName theAge:(NSInteger*)theAge
18、if-else超過四層的時候,就要考慮重構(gòu),多層的if-else結(jié)構(gòu)很難維護(hù)。
19、當(dāng)需要一定條件才執(zhí)行某項操作時,最左邊的應(yīng)該是最重要的代碼,不要將最重要的代碼內(nèi)嵌到if中。
如良好的風(fēng)格是:- (void) someMethod{if(![someOther boolValue]) { return; }//最重要的代碼寫在這里;}
反面教材:-(void) someMethod{if([someOther boolValue]) { //重要代碼;} }
20、所有的邏輯塊都使用{}花括號包圍,就算只是一行代碼。
21、明確指定構(gòu)造函數(shù),并有適當(dāng)?shù)淖⑨尅?
22、 不要在init方法中把變量或者說屬性初始化為0或者nil,因為沒有必要。
23、UIView的子類初始化的時候,不要進(jìn)行任何的布局操作。布局操作應(yīng)該在layoutSubviews里面做;需要重新布局的時候調(diào)用setNeedsLayout,而不要直接調(diào)用layoutSubviews。
24、保持公共API簡單,也就是保持.h文件簡單。放在.h中聲明的函數(shù)都是會被公開的,如果根本就沒必要對其他類公開,再不要在.h中聲明。OC中的方法都是公有方法,沒有私有方法一說。
25、一個文件只實現(xiàn)一個類。同一個文件中不要有多個類。
26、Protocol單獨(dú)用一個文件來創(chuàng)建,盡量不要與相關(guān)類混在一個文件中。
27、在類定義中使用到自己定義類的時候,盡量不要在頭文件中引入自己定義類的頭文件,使用@class替代。而在實現(xiàn)文件中引入頭文件。
28、布局時盡量使用相對布局,比如使用子View在父View中的相對位置。
29、代碼折疊,這個可能是關(guān)于開發(fā)效率的,我也寫在編碼規(guī)范中,因為這個很有用。Xcode7默認(rèn)沒有開啟代碼折疊,如果你的方法體行數(shù)很長,看起來會很不方便,此時你就可以把方法“收起來”,一個類中的結(jié)構(gòu)就會很清晰。開啟方法如下:Xcode菜單-->Preferences-->Text Editing-->勾選Code folding ribbon。
希望以上對你將要學(xué)習(xí)iOS開發(fā)或即將從事iOS開發(fā)的你有所幫助!扣丁學(xué)堂作為北京千鋒互聯(lián)科技有限公司旗下的在線教育平臺,通過線上線下相結(jié)合的形式,全方位的服務(wù)學(xué)員,從iOS開發(fā)入門基礎(chǔ)到iOS UI設(shè)計再到iOS高級專題,最后是iOS項目實戰(zhàn)。一套iOS從入門到到精通的免費(fèi)iOS開發(fā)教程。
查看更多關(guān)于“iOS培訓(xùn)資訊”的相關(guān)文章>>