一,關于空行
A:.h中的空行
1,文件說明與頭文件包涵(#import)之間空1行
2,頭文件包涵(#import)之間,如果需要分類區(qū)別,各類別之間空1行
3,頭文件包涵(#import)與@class之間空2行
4,@interface與@class之間空一行
5,頭文件{}里面,空1行開始聲明對象成員,如果需要分類區(qū)別,各類別之間空1行
6,{}外空1行,書寫屬性,如果需要分類區(qū)別,各類別之間空1行
7,空1行開始寫方法,如果需要分類區(qū)別,各類別之間空1行
8,方法完成后,空1行@end
9,如果需要聲明protocal,空2行接著寫。通常protocal寫在@end后面,但是聲明在@interface前面,也可以另寫一個文件
B:.m中的空行
1,文件說明與頭文件包涵(#import)之間空1行
2,頭文件包涵(#import)之間,如果需要分類區(qū)別,各類別之間空1行
3,@implementation和@synthesize之間空一行,@synthesize不要使用逗號(,)如果需要分類區(qū)別,各類別之間空1行
4,@synthesize與方法之間空2行
5,各方法之間空2行
C:方法里面的空行
1,方法名后空1行開始寫
2,變量聲明后需要空1行,如果需要分類區(qū)別,各類別之間空1行
3,條件,循環(huán),選擇語句,整個語句結束,需要空1行
4,各功能塊之間空1行
5,后一個反括號之前不空行
6,注釋與代碼之間不空行
7,#pragma mark與方法之間空1行
二,關于空格
1,.h中協(xié)議<>前面有1個空格
2,.h中成員聲明時,類型與變量之間有至少1各空格。星號(*)靠近變量,不靠近類型。(部分習慣,所有變量可以以*對齊,中間留空)
3,@property后有1各空格,()里面,逗號后有1個空格,括號外,先留1個空格,再聲明屬性
4,方法+,-后,與()之間有1個空格
5,返回類型與*之間有1個空格,方法參數(shù)中返回類型與*之間有1個空格
6,多參數(shù)的方法,每一個參數(shù)后面都有1個空格
三,關于布爾值
1,不要用if(obj==nil){},而用if(!obj){}
2,比較時把常量放前面可以避免錯誤
不要用if(aIntValue==255){},而用if(255==aIntValue){},避免漏掉一個“=”,而變成賦值
3,不要用if(aBool==YES){},直接用if(aBool){}或if(!!aBool){}
四,變量屬性名和其它
1,盡量在使用的時候才聲明變量,盡量少用全局變量
2,變量名不要只使用一個字母,盡量能表示變量的意思
3,@synthesize和@dynamic,應該放在類實現(xiàn)的上面,每一個聲明都單獨一行
4,協(xié)議protocls需要加#pragam marks-來區(qū)分
5,釋放時應該[obj release],obj = nil; delegate也應該在dealloc里面delegate = nil;
五, 方法聲明與定義
1,在 - OR + 和返回值之間留1個空格。
- (void)doSomethingWithString:(NSString *)theString {
//TODO
}
2,參數(shù)列表中,只有參數(shù)之間有空格, 方法名和第一個參數(shù)間不留空格。如:
- (void)doSomething:(NSString *)theString (NSArray *)theArray {
//TODO
}
3,當參數(shù)過長時,每個參數(shù)占用一行,以冒號對齊。如:
- (void)doSomethingWith:(GTMFoo *)theFoo
rect:(NSRect)theRect
interval:(float)theInterval {
//TODO
}
4,如果方法名比參數(shù)名短,每個參數(shù)占用一行,至少縮進4個字符,且為垂直對齊(而非使用冒號對齊)。如:
- (void)short:(GTMFoo *)theFoo
longKeyword:(NSRect)theRect
evenLongerKeyword:(float)theInterval {
//TODO
}
六,方法的調用
1,調用方法沿用聲明方法的習慣。
2,所有參數(shù)應在同一行中,或者每個參數(shù)占用一行且使用冒號對齊。如:
[myObject doFooWith:arg1 name:arg2 error:arg3];
//或者
[myObject doFooWith:arg1
name:arg2
error:arg3];
3,和方法的聲明一樣,如果無法使用冒號對齊時,每個參數(shù)一行、縮進4個字符、垂直對其(而非使用冒號對齊)。如:
[myObj short:arg1
longKeyword:arg2
evenLongerKeyword:arg3];
七,@public和@private
@public以及@private訪問標識符應該以一個空格縮進。
@interface MyClass : NSObject {
@public
//TODO
@privat
//TODO
}
@end
八,Protocols
1,類型標示符、代理名稱、尖括號間不留空格。
2,該規(guī)則同樣適用于:類聲明、實例變量和方法聲明。如:
@interface MyProtocoledClass : NSObject {
@private
id _delegate;
}
- (void)setDelegate:(id)aDelegate;
@end
3,如果類聲明中包含多個protocol,每個protocal占用一行,縮進2個字符。如:
@interface CustomViewController : ViewController<
AbcDelegate,
DefDelegate> {
//TODO
}
|