2008-11-21 77 views
1

當我將任何第三方的代碼到我的應用程序,我做的第一件事是重新格式化我的個人喜好編碼:你的Objective-C編碼風格是什麼?

// Single line comments only 

// I never put spaces inside my parenthesis 
-(void)myOCDMethod 
{  
    // If an if or for statement has only one instruction, I don't use brackets 
    if(this) 
     [self that]; 
    else 
     [self somethingElse]; 

    // If I do have to use brackets, they go on their own lines so that they line up 
    if(this) 
    { 
     [self that]; 
     [self andThat]; 
    } 

    // I always put the pointer asterisk next to the instance name 
    NSObject *variable = [[NSObject alloc] init]; 

    // I always put spaces around operators 
    if(i == 0) 
     x = 2; 

} 

你用什麼OCD編碼格式?

+0

我相信,不使用括號也會編譯更簡單的指令。不應該在每天的基礎上顯着,但總是很高興知道你在幫助。 爲什麼單行註釋? – 2008-11-27 01:32:54

+0

編譯器爲什麼不能自行執行該優化?似乎微不足道...... – 2012-07-07 19:47:36

+0

(同樣的問題適用於A?B:C;) – 2012-07-07 19:48:50

回答

3

我做了很多這方面,有幾個不同點:

我總是前和括號後插入空格: -(void)myOCDMethod -> - (void) myOCDMethod

我留在同一行括號:

if (this) 
{ 
    //code 
} 
成爲

if (this) { 
    //code 
} 

如果我感覺特別強迫症,我會排隊當地人:


float    l1; 
NSArray    *array; 
ReallyLongClassName *object; 

最後,TABS,而不是空間。

+1

如果我不這樣做,那麼這一天就不正確。除了排隊的地方,這只是瘋狂的矯枉過正。 – willc2 2011-10-11 07:36:14

1

與您的很相似,儘管我在「 - 」或「+」和返回類型的左括號之間留有空格。哦,我用(條件)? (value1):(value2)很多東西,主要用於任務和數學...我知道它使得代碼難以閱讀,但它節省了三行的輸入。

0
  1. 縮進的代碼可以正確
  2. 正確的換行符。 (最大一個換行符;每行函數之前突破和評論等)
  3. 正確的命名約定
2

標籤是在一條線上的中間罪惡,而空間搖滾!例如:

int n; 
double d; 

讓標籤大小爲4,我會指出來用點:

. . . 
int  n; // two tabs here 
double d; // one tab here 

如果代碼被打開另一開發人員的機器,其中,標籤大小爲2,他」會看到下面的圖片:

. . . . . 
int n; 
double d; 

所以,你應該要麼使用相同標籤的大小(這不會反正任何人在世界上的工作,因爲你的代碼可以重複使用 - 你不能強迫所有人)或堅持空間。疑難雜症?

0

我在

NSString* aString; 

陣營,而不是

NSString *aString; 

(對於這兩個變量和參數)

的理由是,在第一種情況下,它看起來像它說「aString是一個NSString指針」,而後者讀取更像「(取消引用)* aString是一個NSString對象」。特別是在Obj-C中,所有的對象都是堆分配的,因此被指針所引用,第一個對象感覺不太複雜。

我只將函數定義,methos定義和ivar塊的大括號對齊,因爲它們是文件中的第一級作用域(除了全局之外的任何東西),否則就會感覺「泄漏」。對齊,該塊更明顯,沒有「洞」。

在方法的簽名,我用這個間距:

- (void) methodName:(Class*) object; 

我喜歡垂直對齊冒號當存在多於2個參數(除非第一param標籤是遠遠長於方法名稱,當它休息時間)。 Xcode很好地自動標籤到這個。

其他一切都和你一樣。