Objective-C Coding Style
2015-02-06 本文已影响107人
剑伟大大
随着移动互联网的发展浪潮,更多的开发者都加入了移动开发中来。Objective-c和swift学的飞起(本章只针对oc进行详解),但是写出来的代码简直花样百出,相信大多数coder看到这些代码时,不禁想问一句:“你TM写的什么鬼,what‘s the fxxk”。
coding style真的很!重!要!不管是企业还是独立开发者都有自己的一套代码规范,良好的代码规范利于别人学习和重构,节省开发时间,提高开发效率,提升“性能”等等等等。Next,我们进入正题。
PS:下面多人的做法,只是不推荐,并不能说明语法有错误,程序并不会crash
1、条件判断语句
情景一:布尔值类型的条件判断
应该这么干:
BOOL isSelected;
if (isSelected) {
// true, do something
}
else {
// false, do something
}
有些人会这么干:
BOOL isSelected;
if (isSelected == YES) {
// true, do something
}
情景二:值比较的条件判断
应该这么干:
NSInteger count = 100;
if (count == 100) {
}
情景三:复杂的条件判断
应该尽量把if中复杂的条件拆分出来:
BOOL isObjC = YES;
BOOL isSwift = NO;
BOOL isIOSLanguage = isObjC || isSwift;
if (isIOSLanguage) {
// do something
}
2、三目运算
情景一:复杂的三木运算需要拆分
应该这么干:
NSInteger x = (a > b) ? c : d;
NSInteger result = (e > f) : x : y;
不要这么搞:
NSInteger result = (e > f) ? (a > b ? c : d) : y;
情景二:如果第二个参数返回的对象跟条件判断的对象相等时
应该这么干:
result = objectC ? : swift;
3、switch...case条件语句
情景一:case分支中有多条语句时需要加{}
switch (condition) {
case 1:
// ...
break;
case 2: {
// 多行
// Multi-line example using braces
break;
}
case 3:
// ...
break;
default:
// ...
break;
}
情景二:在不同case分支中有相同的代码块,应合并
switch (condition) {
case 1:
case 2:
// code executed for values 1 and 2
break;
default:
// ...
break;
}
情景三:如果使用枚举类型,default分支不是必须的
switch (menuType) {
case ZOCEnumNone:
// ...
break;
case ZOCEnumValue1:
// ...
break;
case ZOCEnumValue2:
// ...
break;
}
4、枚举类型
使用NS_ENUM宏来声明枚举,它可以进行类型声明和自动完成,如果不自己实现枚举值,第一个值为0,然后依次增加
typedef NS_ENUM(NSUInteger, ZOCMachineState) {
ZOCMachineStateNone,
ZOCMachineStateIdle,
ZOCMachineStateRunning,
ZOCMachineStatePaused
};