2010-10-01 85 views
27

我一直在教自己的Objective-C約6個月,並喜歡使用該語言很多。然而,我還沒有找到任何好的編碼標準,所以我寫的代碼總是看起來像一個不一致的混亂。Objective-C編碼標準?

類似於命名規則的東西可以繼續使用,但間距,縮進和(不可能的?)80字符行寬度的效果並不好。

您使用Objective-C的約定是什麼?

這裏是行不通的東西一個小例子:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 

     self.navigationItem.leftBarButtonItem = 
     [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel 
                 target:self.parentViewController 
                 action:@selector(done:)] autorelease]; 

     NSString* units = [[NSString alloc] initWithFormat:@"%@", @"oz"]; 
     NSString* optionOne = [[NSString alloc] initWithFormat:@"[%d%@] Calculate", 100, units]; 

     self.options = [[NSMutableArray alloc] initWithObjects: 
         optionOne, 
         @"Configure Portions", 
         @"Configure Notifications", 
         @"Help", 
         nil]; 

     [units release]; 
     [optionOne release]; 
     [tableView reloadData]; 
    } 
    return self; 
} 
+0

https:// github。com/raywenderlich/objective-c-style-guide#language – thesummersign 2014-05-26 08:02:34

回答

7

很好的問題,謝謝你的提問。

一些我個人的編碼標準:

  1. 我不堅持到80個字符,但我儘量保持120左右下。 Obj-C是一個帶有「命名」參數的羅嗦語言,而Cocoa是一個甚至是較爲理性的框架。我很少需要編輯VT220上的代碼。
  2. 我通常不會將長方法調用與垂直排列的「:」分開,就像Xcode希望你做的那樣。我喜歡傳統的直線前進,並根據需要包裹線條,縮進一個製表位。
  3. 如果這變得非常笨重,我會在多行中創建和使用對象。例如。在上面,我可能會在一行中創建選項數組,並在下一行上執行[self setOptions:...]。無論如何,這使得調試更簡單。
  4. 我不使用點符號來訪問屬性,因爲我發現它隱藏了行爲。我使用傳統的[object property]表示法。
  5. 我從來沒有圓滿地解決ivars與本地人的命名問題。 Xcode對它們進行了不同的顏色,這通常是我所需要的,但我內心深處的MSFT用戶仍然認爲實例範圍前綴是有用的,例如, m_或至少_。但我通常不這樣做,因爲看起來很醜。善良知道我們蘋果人討厭醜陋的東西。 :)

(對於它的價值,在你上面的例子,你可以直接使用-[NSString stringWithFormat:...]而不是分配/初始化/釋放得到一個自動釋放的字符串。)

+3

+1。我遵循幾乎相同的準則,也不太喜歡[波蘭東部聖誕樹記法](http://www.kuro5hin.org/story/2004/6/1/43942/41236)。 – dreamlax 2010-10-01 00:12:49

+1

@dreamlax:表示該名稱的+1。 – 2010-10-01 00:18:23

+0

除了這些優秀的建議之外,當我讓Xcode重新縮進整個文件時,我還會使用任何縮進。手動縮進是浪費時間,幸運的是,Xcode確實是一個體面的工作。 – bbum 2010-10-01 00:32:56

1

這又是一個很好的來源:(我新,因此它不會讓我張貼在同樣的回答兩個鏈接) http://cocoadevcentral.com/articles/000082.php(可可風格的OBJ C部分,1 2)

第2部分是相同的鏈接,但結尾在000083.php

2

這可能是在這裏的反對意見,但...我不縮進單行,我打開文字包裝。這樣做的好處是你可以縮小/拉伸你的窗口,並且代碼總是看起來不錯,再加上你不必浪費任何時間來試圖使代碼看起來可以接受的新行和製表符/空格。

+0

這正是我所做的。 – 2013-08-07 08:01:09