13. iOS開發(fā)小細(xì)節(jié)--OC篇

??今天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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容