羅列使用Objective-C來開發(fā)iOS的編碼建議

羅列使用Objective-C來開發(fā)iOS的編碼建議

藍(lán)鷗上海中心2016-03-28 14:10:01方法 代碼 可以 閱讀(224) 評論(0)

聲明:本文由入駐搜狐公眾平臺的作者撰寫,除搜狐官方賬號外,觀點(diǎn)僅代表作者本人,不代表搜狐立場。舉報(bào)

在開發(fā)過程中,我們不僅要去看別人的代碼,也要讓別人看我們的代碼。那么,有一個良好的編碼習(xí)慣將會非常重要。下面將會羅列使用Objective-C來開發(fā)iOS的編碼建議。

1. 任意函數(shù)長度不得超過50行。(其實(shí)很容易就超過50行,這就要考慮代碼抽取了。

2. 任意行代碼不能超過80字符。(其實(shí)也很容易超過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ù)計(jì)算,比如代碼中多處要使用屏幕寬度,然后計(jì)算:[[UIScreenmainScreen] bounds].size.width ,很多次,閑得很繁瑣,代碼也冗長。不如直接宏定義:

#defineSCREEN_WIDTH([[UIScreen mainScreen]bounds].size.width)

12. 合理使用約定俗成的縮略詞:

alloc:分配;

alt:輪流,交替;

app:應(yīng)用程序;

calc:計(jì)算;

dealloc:銷毀、析構(gòu);

func:函數(shù)、方法;

horiz:水平的;

info:信息;

init:初始化;

max:最大的;

min:最小的;

msg:消息;

nib:Interface Builder;

rect:矩形;

temp:暫時的;

vert:垂直的;

13. 宏定義全部字母大寫。

14. 函數(shù)長度不要超過50行,小函數(shù)比大函數(shù)可讀性更強(qiáng)。函數(shù)的參數(shù)不宜過多,零元函數(shù)最好,一元函數(shù)也不錯,高于三元的函數(shù)虛重構(gòu)。

15. 合理范圍內(nèi)使用鏈?zhǔn)骄幊?

NSString *myName = [[NSString alloc] init];

但是嵌套不宜超過3層,超過3層需進(jìn)行重構(gòu)。

16. 函數(shù)調(diào)用時所有參數(shù)在同一行。如果參數(shù)過多,則可以每行一個參數(shù),每個參數(shù)以冒號對齊。

17. 對傳入?yún)?shù)的保護(hù)或者說是否為空的判斷,盡量不要使用if(!obj),而使用NSAssert斷言來處理。NSAssert是系統(tǒng)定義的宏。

NSAssert(myName!= nil, @"myName參數(shù)為空");

如果條件判斷為真,則程序繼續(xù)執(zhí)行;

如果判斷條件為假,則拋出異常,異常內(nèi)容為后面定義的字符串;

18. 方法參數(shù)名前一般使用"an","the","new"來進(jìn)行修飾。如:

-(void)setPersonInfo:(NSString*)theID theName:(NSString*)theName theAge:(NSInteger*)theAge

19. if-else超過四層的時候,就要考慮重構(gòu),多層的if-else結(jié)構(gòu)很難維護(hù)。

20. 當(dāng)需要一定條件才執(zhí)行某項(xiàng)操作時,最左邊的應(yīng)該是最重要的代碼,不要將最重要的代碼內(nèi)嵌到if中。

如良好的風(fēng)格是:

- (void) someMethod{if(![someOther boolValue]) { return; }//最重要的代碼寫在這里;}

反面教材:

-(void) someMethod{if([someOther boolValue]) { //重要代碼;} }

21. 所有的邏輯塊都使用{}花括號包圍,就算只是一行代碼。

22. 明確指定構(gòu)造函數(shù),并有適當(dāng)?shù)淖⑨尅?/p>

23. 不要在init方法中把變量或者說屬性初始化為0或者nil,因?yàn)闆]有必要。

24. UIView的子類初始化的時候,不要進(jìn)行任何的布局操作。布局操作應(yīng)該在layoutSubviews里面做;需要重新布局的時候調(diào)用setNeedsLayout,而不要直接調(diào)用layoutSubviews。

25. 保持公共API簡單,也就是保持.h文件簡單。放在.h中聲明的函數(shù)都是會被公開的,如果根本就沒必要對其他類公開,再不要在.h中聲明。OC中的方法都是公有方法,沒有私有方法一說。

26. 一個文件只實(shí)現(xiàn)一個類。同一個文件中不要有多個類。

27. Protocol單獨(dú)用一個文件來創(chuàng)建,盡量不要與相關(guān)類混在一個文件中。

28. 在類定義中使用到自己定義類的時候,盡量不要在頭文件中引入自己定義類的頭文件,使用@class替代。而在實(shí)現(xiàn)文件中引入頭文件。

29. 布局時盡量使用相對布局,比如使用子View在父View中的相對位置。

30. 代碼折疊,這個可能是關(guān)于開發(fā)效率的,我也寫在編碼規(guī)范中,因?yàn)檫@個很有用。Xcode7默認(rèn)沒有開啟代碼折疊,如果你的方法體行數(shù)很長,看起來會很不方便,此時你就可以把方法“收起來”,一個類中的結(jié)構(gòu)就會很清晰。開啟方法如下:

Xcode菜單-->Preferences-->Text Editing-->勾選Code folding ribbon.如圖:

31. 推薦方法的第一個花括號直接跟在方法體后,而不是另起一行,這樣可以減少代碼行。

32. 推薦方法體中的第一行留空,最后一行不留空,這樣一個方法就會比較清晰。如圖:

但是如果該花括號里面又是一個if,for之類的帶花括號的語句塊,那么上述的第一行可以不留空。

同樣,如果花括號內(nèi)第一行是注釋的話,第一行也可以不留空。注釋也起到了分隔代碼的作用,看起來比較清晰。

再者,如果花括號內(nèi)只有一行代碼,第一行可以不留空。

33. block中第一行也要留空,同方法體中的第一行留空,使代碼清晰。

34. 代表類方法和實(shí)例方法的"+"加號,"-"減號后需要一個空格。這是一個非常小的細(xì)節(jié),系統(tǒng)默認(rèn)的方法都是這樣的,我們自己聲明或者實(shí)現(xiàn)一個方法的時候也需要這樣:

35. 這一條有點(diǎn)像編程經(jīng)驗(yàn)了,就是為解決某個問題估算時間。比如要開發(fā)某個功能、調(diào)試某個bug、給自己一個時間限制,如果在這期間不能解決問題,那么就去尋求幫助。這既是給自己一個壓力,也為了不浪費(fèi)時間。雖然,這一條其實(shí)很難做到,我往往由于不甘心而無限拖延時間去解決問題。

36. 由于提到編程經(jīng)驗(yàn),就不得不提到版本控制。務(wù)必去學(xué)會SVN或者Git,就算你是獨(dú)立開發(fā),也要學(xué)會控制自己的代碼,當(dāng)然,你要經(jīng)常備份你的代碼。

希望以上對你將要學(xué)習(xí)iOS開發(fā)或即將從事iOS開發(fā)的你有所幫助!藍(lán)鷗iOS開發(fā)培訓(xùn)有著國內(nèi)首家完整的移動iOS開發(fā)課程體系,高度專注iOS前沿技術(shù)。藍(lán)鷗iOS培訓(xùn)開發(fā)項(xiàng)目全部來自于真實(shí)的企業(yè)項(xiàng)目,單獨(dú)項(xiàng)目代碼量超過5 萬行。為了讓學(xué)員盡快的進(jìn)入到企業(yè)開發(fā)的項(xiàng)目中,藍(lán)鷗使用自主開發(fā)的產(chǎn)品和為客戶定制的企業(yè)產(chǎn)品為案例,大批藍(lán)鷗iOS培訓(xùn)開發(fā)學(xué)員都從中收益。

我們是一群熱愛IT的年輕人,如果你也愛IT、愛ios開發(fā),歡迎前來藍(lán)鷗上海iOS培訓(xùn)中心參觀學(xué)習(xí),讓我們共同為夢想發(fā)聲。

LOGO

+訂閱

12天免費(fèi)試聽,零學(xué)費(fèi)入學(xué)!

iOS課程,平均就業(yè)薪資8500+的課程!

上海iOS、html5報(bào)名入口

上海html5、 iOS火熱報(bào)名中!

閱讀(224) 舉報(bào)

31喜歡 1沒勁 分享到

熱門關(guān)注

搜生活

搜生活+關(guān)注

搜狐公眾平臺官方賬號

MAGIC楊夢晶

MAGIC楊夢晶+關(guān)注

生活時尚&搭配博主 /生活時尚自媒體 /時尚類書籍作者

搜狐教育

搜狐教育+關(guān)注

搜狐網(wǎng)教育頻道官方賬號

星吧GEO

星吧GEO+關(guān)注

全球最大華文占星網(wǎng)站-專業(yè)研究星座命理及測算服務(wù)機(jī)構(gòu)

我來說兩句(0人參與)

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

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

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