??今天down下來一個demo,看到其作者的一些代碼寫法的習(xí)慣,倒不是說人家寫的不好,最起碼功能沒問題好吧。只是有一些小細(xì)節(jié),我不是很喜歡,總結(jié)我的習(xí)慣,以及平時瀏覽的blog,今天寫一寫我覺得應(yīng)該注意的問題。
這篇文章,長期維護(hù),只求代碼更加完美(加粗)!
1.不需要存在的代碼
1.1 由IDE自動生成的函數(shù)
像這種自動生成的函數(shù),沒有用到的話 就刪掉吧。
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
1.2 遇到一些函數(shù)的參數(shù)需要傳Block作回調(diào)函數(shù)使用,若不需要回調(diào)就別硬傳 ^{}
[self presentViewController:alert
animated:YES
completion:^{}];
像這種的,不需要做后續(xù)處理,你直接寫個 nil 多好
1.3 對于你要操作的對象,不要做一些多余的、無意義的判斷
比如說,我要對一個 UIView 設(shè)置 frame ,像這種必須保證實例對象必須存在才能做的操作,就沒必要再去做判斷了
if (view) {
view.frame = rect
}
2.代碼規(guī)范
2.1 宏定義的名稱要全部用大寫字母
2.2 盡量用字面量語法來優(yōu)化我們的Object-C語法
[dictionary setObject:object forKey:key];
改成
dictionary[key] = object;
NSString * string = [dictionary objectForKey:key];
改成
NSString * string = dictionary[key];
相信每個同學(xué)都會有一個 常量.h文件
2.3 數(shù)字啥的常量,就別用宏定義了,用static const把
#define CONTROLLER_FROM_A 1
改成
static const int kControllerFromA = 1;
2.4 寫完2.1突然想起來 用作key的字符串最好用 k 開頭
static NSString * const CCControllerFromA = @"CCControllerFromA";
改成
static NSString * const kCCControllerFromA = @"kCCControllerFromA";
3. 良好的編碼習(xí)慣
3.1 一些常用的UI方面的常量,用宏定義表示
// cell高度
#ifndef CC_NAVIBAR_HEIGHT
#define CC_NAVIBAR_HEIGHT (CC_ABOVE_IOS(7) ? 64:44)
#endif
//1點(diǎn)的線寬
#ifndef CC_SINGLE_LINE_WEIGHT
#define CC_SINGLE_LINE_WEIGHT (1 / [UIScreen mainScreen].scale)
#endif
3.2 函數(shù)中一些有意義的量變?yōu)槌A?/p>
// 這里的5000數(shù)字用 static const CGFloat 表示一下,要不加個注釋啊。
if (width > 5000) {
width = 5000;
}
// 10提出來,kMaxCount = 10
if (mutebelArray.count > 10) {
NSRange removeRange = NSMakeRange(10, mutebelArray.count - 10);
[mutebelArray removeObjectsInRange:removeRange];
}
3.3 巧用三目運(yùn)算
if (picture.length > 0) {
[self.imgView sd_setImageWithURL:[NSURL URLWithString:picture]];
} else {
[self.imgView sd_setImageWithURL:[NSURL URLWithString:default]];
}
改成
NSString *imgURLStr = picture.length > 0 ? picture : default;
[self.imgView sd_setImageWithURL:[NSURL URLWithString:imgURLStr]];
3.4 字面量數(shù)組和字面量字典使用的時候要注意 nil
// 這里的a,b,c,d中任何一個是nil,都是crash掉,需要注意!
NSDictionary * dictionary = @{
@"a" : a,
@"b" : b,
@"c" : c,
@"d" : d,
};
3.5 對于一些狀態(tài)或者類型的進(jìn)行判斷的時候,最好把對應(yīng)的狀態(tài)或者類型寫成enum
3.6 在 .h中如果用到了某個clasee如果不是必需,用@class替代#import