在開發(fā)過程中苇本,我們不僅要去看別人的代碼,也要讓別人看我們的代碼菜拓。那么瓣窄,有一個良好的編碼習(xí)慣將會非常重要。下面就是一些較常規(guī)的代碼規(guī)范纳鼎。
【1】聲明類或方法時俺夕,注意空格的使用,參數(shù)過多時可換行保持冒號對齊
- (id)initWithName:(NSString *)name
age:(NSInteger)age
sex:(MDPersonalSex)sex;
調(diào)用方法時也是如此贱鄙,參數(shù)都寫在一行或換行冒號對齊
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"title"
message:@"message"
delegate:self
cancelButtonTitle:@"取消"
otherButtonTitles:@"確定", nil];
【2】命名規(guī)則:類名首字母大寫劝贸,方法首字母小寫,方法中的參數(shù)首字母小寫逗宁,同時盡量讓方法的命名讀起來像一句話映九,能夠傳達(dá)出方法的意思,同時取值方法前不要加前綴“get”
- (void)choosePhotoAtIndex:(NSUInteger)index;
變量名小寫字母開頭
NSString *title = [titleArray objectAtIndex:0];
常量用小寫字母k開頭瞎颗,后續(xù)首字母大寫
static const NSString *kBaseServiceUrl = @"www.baidu.com";
【3】盡可能保證 .h文件的簡潔性件甥,可以不公開的API就不要公開了,寫在實現(xiàn)文件中即可
【4】Xcode支持Objective-C/C/C++混編哼拔,所以引用頭文件時:#import Ojbective-C/Objective-C++頭文件(Objective-C++是Objective-C與C++混編的文件)引有,#include C/C++頭文件。
【5】寫delegate的時候類型應(yīng)該為weak弱引用倦逐,以避免循環(huán)引用譬正。
@property (nonatomic, weak) id<MDPersonalDetegate> delegate;
【6】實例變量申明的時候前面加下劃線"_",局部變量不用檬姥。
@interface MDPersonal : NSObject {
@private
NSString *_name;
NSUInteger _age;
MDPersonalSex _sex;
}
【7】在每個方法的定義前留白一行曾我,也就是在方法和方法之間留空一行。
【8】功能相近的方法要放在一起穿铆,并推薦使用#pragma mark - ***來導(dǎo)航代碼您单,切分代碼塊。這樣可以方便函數(shù)的查找荞雏。并且可以使用快捷鍵control+6 來快速查找方法的位置虐秦。
#pragma mark - UITableViewDataSource
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return self.dataSource.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
SCTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([SCTableViewCell class]) forIndexPath:indexPath];
return cell;
}
【9】二元運算符和參數(shù)之間要有一個空格平酿,如賦值號=左右各留一個空格。
self.myString = @"235423523452345";
【10】一元運算符和參數(shù)之間不放置空格悦陋,比如蜈彼!非運算符,&俺驶,|等
BOOL isOpen = true;
BOOL isClose = !isOpen;
【11】強制類型轉(zhuǎn)換和參數(shù)之間不放置空格幸逆。
NSString *str3 = (NSString*)self.myString;
【12】長的變量值應(yīng)該拆分為多行。尤其體現(xiàn)在使用數(shù)組或者字典暮现。以下也分別是快速聲明數(shù)組@[]和字典@{}的方法还绘。
NSArray *array = @[@"1111111",
@"2222222",
@"3333333",
@"4444444"
];
NSDictionary *dict = @{@"key1":@"11",
@"key2":@"22",
@"key3":@"33",
@"key4":@"44"
};
【13】盡量減少代碼中的重復(fù)計算,比如代碼中多處要使用屏幕寬度:[[UIScreenmainScreen] bounds].size.width 栖袋,然后計算很多次拍顷,閑得很繁瑣,代碼也冗長塘幅。不如直接宏定義:
#define SCREEN_WIDTH ([[UIScreen mainScreen] bounds].size.width)
【14】宏定義全部字母大寫
【15】定義枚舉的時候用typedef
typedef NS_ENUM(NSInteger, MDPersonalSex) {
///性別保密
MDPersonalSexDefault,
///男
MDPersonalSexMale,
///女
MDPersonalSexFemale
};
【16】第一個花括號直接跟在方法體后昔案,而不是另起一行,這樣可以減少代碼行
【17】Protocol單獨用一個文件來創(chuàng)建电媳,盡量不要與相關(guān)類混在一個文件中踏揣。
【18】代表類方法和實例方法的"+"加號,"-"減號后需要一個空格。
【19】加載xib時名稱最好用NSStringFromClass()匾乓,可以避免書寫錯誤
[self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([SCSmartApplyPhotoCell class]) bundle:nil]
forCellReuseIdentifier:NSStringFromClass([SCSmartApplyPhotoCell class])];
【20】如果使用第三方庫捞稿,盡量不要修改其內(nèi)部實現(xiàn),而是應(yīng)該再次封裝钝尸,個性定制括享。
【21】如果屬性是BOOL類型,建議在括號中重寫Get方法名稱珍促,已提高代碼可讀性
@property (assign, nonatomic, getter=isShow) BOOL show;
待續(xù),不斷完善中剩愧。
注:上面都是我的一家之言猪叙,如果大家的開發(fā)團(tuán)隊或者公司有自己的編碼規(guī)范,當(dāng)然按照團(tuán)隊的來仁卷。