Objective-C開發(fā)編碼規(guī)范

其實大多數(shù)的時間较木,我們寫出來的代碼并不僅僅是給自己看的红符,在協(xié)同開發(fā)中還有很多人會來Review你的代碼,因此伐债,為了不讓別人吐槽自己的代碼预侯,必須要養(yǎng)成良好的習慣,讓自己去學習一些非常好的編碼風格峰锁,因此這里來羅列一下Objectiv-C常用的編碼規(guī)范萎馅。

【1】命名規(guī)則

  • 仿照Cocoa的風格來,使用長命名風格
  • 變量命名推薦的命名語素順序是:最開頭的是命名空間的簡寫虹蒋,然后越重要糜芳、區(qū)別度越大的語素越要往前放飒货。經(jīng)典的結(jié)構(gòu)是:作用范圍 + 限定修飾 + 類型。

【2】 在每個方法的定義前留白一行峭竣,也就是在方法與方法之間留空一行塘辅。

【3】 功能相近的方法要放在一起,比如一些協(xié)議的方法皆撩,這里推薦用 #pragma mark - *** 的格式來導航代碼扣墩,切分代碼塊。這樣可以方便方法的查找扛吞,并且可以用快捷鍵control + 6來快速查找方法的位置沮榜。

【4】 在用property定義變量時,建議寫全所有參數(shù)喻粹,尤其是如果想定義成只讀的(那么一定要加上readonly),這也是代碼安全性的一個習慣草巡。在定義變量名時守呜,使*號靠著變量名,不要留空格山憨。例如:

@property (nonatomic, copy) NSString *myString;

【5】 定義長的變量值應該拆分成多行查乒。尤其體現(xiàn)在使用數(shù)組或字典。以下也分別是快速聲明數(shù)組@[] 和 字典@{}的方法郁竟。

 NSArray *array = @[@"Lin",
                       @"Hong",
                       @"is",
                       @"my",
                       @"sweet"
                       ];
    
    
    
    NSDictionary *dic = @{
                          @"name":@"LinH",
                          @"height":@"168cm",
                          @"weight":@"secret",
                          @"lover":@"Lix"
                          };


【6】 二元運算符和參數(shù)之間要留一個空格玛迄,如賦值號=左右兩邊各留一個空格。

    self.myString = @"Lin,i love u";
    

【7】 一元運算符和參數(shù)之間不放置空格棚亩,比如 蓖议!非運算符,&按位運與讥蟆,|按位或勒虾。


 BOOL isOpen = true;
 BOOL isClose = !isOpen;


【8】 強制類型轉(zhuǎn)換和參數(shù)之間不放置空格。

NSString *str3 = (NSString*)self.myString;

【9】 盡量使用有意義的名字命名瘸彤,拒絕使用i修然,j等無意義字符命名。命名時采用駝峰命名法质况,類的首字母大寫愕宋,使用大駝峰命名,變量的首字母小寫结榄,使用小駝峰命名中贝。

    NSManagedObjectContext  //類 (大駝峰)
    managedObjectContext    //變量(小駝峰)
    

【10】 盡量減少在代碼中直接使用數(shù)字常亮,而使用宏定義等方式潭陪。如MAX_NUMBER_PHONE代替8等等雄妥。這樣我們搜索和后期的修改維護代碼也比較方便最蕾。

【11】 盡量減少代碼中的重復使用,比如代碼中多處要使用屏幕寬度老厌,然后計算[UIScreen mainScreen].bounds.size.width很多次瘟则,很繁瑣,代碼也很長枝秤,不如直接宏定義醋拧。

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

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

  • alloc:分配;
  • alt:輪流淀弹,交替丹壕;
  • app:應用程序;
  • calc:計算;
  • dealloc:銷毀;
  • func:函數(shù)薇溃、方法;
  • horiz:水平的;
  • info:信息;
  • init:初始化;
  • max:最大的;
  • min:最小的;
  • msg:消息;
  • nib:Interface Builder;
  • rect:矩形;
  • temp:暫時的;
  • vert:垂直的;

【13】 函數(shù)長度不要超過50行菌赖,小函數(shù)比大函數(shù)的可讀性更強。函數(shù)的參數(shù)不宜過多沐序,零元函數(shù)最好琉用,一元函數(shù)也不錯,高于三元的函數(shù)需重構(gòu)策幼。

【14】 合理范圍內(nèi)使用鏈式編程

 UIView *myView = [[UIView alloc] init];

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

【15】 函數(shù)調(diào)用時所有參數(shù)在同一行特姐。如果參數(shù)過多晶丘,則可以每行一個參數(shù),每個參數(shù)以冒號對齊唐含。

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

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

  • 如果條件判斷為真脑题,則程序繼續(xù)執(zhí)行
  • 如果判斷條件為假,則拋出異常铜靶,異常內(nèi)容為后面定義的字符串

【17】 if-else超過四層的時候叔遂,就要考慮重構(gòu),多層的if-else結(jié)構(gòu)很難維護争剿。

【18】 當需要一定條件才執(zhí)行某項操作時已艰,最左邊的應該是最重要的代碼,不要將最重要的代碼內(nèi)嵌到if中蚕苇。如良好的風格是:

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

反面教材:

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

【19】 所有的邏輯塊都使用{}花括號包圍涩笤,就算只是一行代碼嚼吞。在寫方法或者函數(shù)時盒件,把花括號的開頭放在跟方法名的同一行。

【20】 明確指定構(gòu)造函數(shù)舱禽,并有適當?shù)淖⑨尅?/p>

【21】 不要在init方法中把變量或者說屬性初始化為0或者nil炒刁,因為沒有必要。

【22】 UIView的子類化初始化的時候誊稚,不要進行任何的布局操作翔始。布局操作應該在layoutSubviews里面做;需要重新布局的時候調(diào)用setNeedsLayout里伯,而不要直接調(diào)用layoutSubviews城瞎。

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

【24】 一個文件只實現(xiàn)一個類漫萄,同一個文件中不要有多個類。

【25】 布局時盡量使用相對布局盈匾,比如使用子View在父View中的相對位置腾务。

【26】 protocol單獨用一個文件來創(chuàng)建,盡量不要與相關類混在一個文件中削饵。

【27】 在類定義中使用到自己定義類的時候岩瘦,盡量不要在頭文件中引入自己定義類的頭文件,使用@class替代窿撬。而在實現(xiàn)文件中引入頭文件启昧。

【28】 推薦方法的第一個花括號直接跟在方法體后,而不是另起一行劈伴,這樣可以減少代碼行密末。

【29】 block中第一行也要留空,同方法體中的第一行留空跛璧。使代碼清晰严里。

【30】 代表類方法和實例方法的"+"加號,"-"減號后需要一個空格追城。這是一個非常小的細節(jié)刹碾,系統(tǒng)默認的方法都是這樣的,我們自己聲明或者實現(xiàn)一個方法的時候也需要這樣座柱。

【31】 不要用點語法來調(diào)用方法迷帜,只用來訪問屬性物舒。這樣是為了防止代碼可讀性問題。

【32】 一個類的Delegate對象通常還引用著類本身戏锹,這樣很容易造成引用循環(huán)的問題冠胯,所以類的Delegate屬性要設置為弱引用。

【33】 好的代碼應該是"自解釋的"景用,但仍然需要詳細的注釋來說明參數(shù)的意義涵叮、返回值、功能以及可能的副作用伞插。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末割粮,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子媚污,更是在濱河造成了極大的恐慌舀瓢,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耗美,死亡現(xiàn)場離奇詭異京髓,居然都是意外死亡,警方通過查閱死者的電腦和手機商架,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門堰怨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛇摸,你說我怎么就攤上這事备图。” “怎么了赶袄?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵揽涮,是天一觀的道長。 經(jīng)常有香客問我饿肺,道長蒋困,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任敬辣,我火速辦了婚禮雪标,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘溉跃。我一直安慰自己汰聋,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布喊积。 她就那樣靜靜地躺著烹困,像睡著了一般。 火紅的嫁衣襯著肌膚如雪乾吻。 梳的紋絲不亂的頭發(fā)上髓梅,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天拟蜻,我揣著相機與錄音,去河邊找鬼枯饿。 笑死酝锅,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的奢方。 我是一名探鬼主播搔扁,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蟋字!你這毒婦竟也來了稿蹲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤鹊奖,失蹤者是張志新(化名)和其女友劉穎苛聘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忠聚,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡设哗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了两蟀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片网梢。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赂毯,靈堂內(nèi)的尸體忽然破棺而出战虏,到底是詐尸還是另有隱情,我是刑警寧澤欢瞪,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站徐裸,受9級特大地震影響遣鼓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜重贺,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一骑祟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧气笙,春花似錦次企、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至谭期,卻和暖如春堵第,著一層夾襖步出監(jiān)牢的瞬間吧凉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工踏志, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阀捅,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓针余,卻偏偏與公主長得像饲鄙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子圆雁,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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