命名規(guī)范
總的來說, iOS命名兩大原則是:可讀性高和防止命名沖突(通過加前綴來保證). Objective-C 的命名通常都比較長, 名稱遵循駝峰式命名法
常量
對于常量命名最好在前面加上字母k作為標記图谷,例如:
static const NSTimeInterval kAnimationDuration = 0.3;
Tips:
#define 宏定義
static 靜態(tài)
const 常量
區(qū)別
宏: 宏定義只是簡單的文本替換雏亚,沒有任何類型信息杆烁。宏就是把源代碼中用到這個宏的地方進行一個簡單的文本替換。
常量:
四種寫法:
static const NSString *DDString = @"女神大人漓糙,么么噠";
const NSString *DDString = @"女神大人,么么噠";
NSString const *DDString = @"女神大人奕筐,么么噠";
NSString * const DDString = @"女神大人泪酱,么么噠";
這幾種有什么區(qū)別呢,簡單點說就是 const 右邊的東西 不能修改茴肥。
例如:
//這個表示 *DDString 這個指針不能修改
NSString const *DDString = @"女神大人坚踩,么么噠";
//這個表示 DDString 這個字符串內(nèi)容不能修改,所以應(yīng)該采用這種
NSString * const DDString = @"女神大人瓤狐,么么噠";
如果加上Static 就是只能在本類里面訪問瞬铸。如果沒有加,還可以通過extern來訪問础锐。
enum的書寫
如果如下書寫enum.
typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,
};
這邊需要注意的是: 枚舉類型命名要加相關(guān)類名前綴并且枚舉值命名要加枚舉類型前綴.
變量和對象的命名
給一個對象命名一般遵循: 修飾 + 類型嗓节。
例如
titleLabel
confirmButton
XXXArray
XXXDictionary
編程規(guī)范
為了保持編程的dry,要盡量把重復(fù)部分封裝起來。
下面推薦的一些小細節(jié)的編程規(guī)范吧皆警。
- 判斷nil或者YES/NO
Preferred:
if (someObject) { ... }
if (!someObject) { ... }
Not preferred:
if (someObject == YES) { ...}
if (someObject != nil) { ...}
if (someObject == YES)容易誤寫成賦值語句, 自己給自己挖坑了...而且if (someObject)寫法很簡潔, 何樂而不為呢?
- 條件賦值
Preferred:
result = object ? : [self createObject];
Not preferred:
result = object ? object : [self createObject];
- 初始化方法
Perferred:
NSArray *names = @[@"Brian", @"Matt", @"Chris", @"Alex", @"Steve"];
NSDictionary *productManagers = @{@"iPhone" : @"Kate", @"iPad" : @"Kamal"};
NSNumber *shouldUseLiterals = @YES;
NSNumber *buildingZIPCode = @10018;
初始化多用字面量方法一直是提倡的行為拦宣。
- BOOL 賦值
Preferred:
BOOL isAdult = age > 18;
Not preferred:
BOOL isAdult;
if (age > 18)
{
isAdult = YES;
}
else
{
isAdult = NO;
}
- 拒絕死值
Preferred:
if (car == Car.Nissan)
const int adultAge = 18;
if (age > adultAge) { ... }
Not preferred:
if (carName == "Nissan")
if (age > 18) { ... }
- weakSelf 防止循環(huán)引用
__weak typeof(self) weakSelf = self;
dispatch_block_t block = ^{
[weakSelf doSomething]; // weakSelf != nil
// preemption, weakSelf turned nil
[weakSelf doSomethingElse]; // weakSelf == nil
};
參考
http://www.cocoachina.com/ios/20151014/13678.html
這篇持續(xù)更新,慢慢積累.......