一、命名规范
命名原则:清晰和简洁,避免歧义。整个工程保持一致性。
类名、协议名命名:大驼峰式命名,每个单词的首字母都采用大写字母。(类名)
属性名、方法名:小驼峰式命名,第一个单词以小写字母开始,后面的单词的首字母全部大写。(属性)
私有变量命名: _ 开头,例:NSString *_someVariable;
属性关键字顺序:原子性,读写,内存管理的顺序排列。@property (nonatomic, readwrite, copy) NSString *userName;
宏定义的常量:#define常量全部大写,单词间用 _ 分隔,#define MY_MIN(A, B) ((A)>(B)?(B):(A))。
类型常量:以字符k开头, static NSString * const kClearCacheNotification = @"kClearCacheNotification";。
{建议使用类型常量,不建议使用#define预处理命令
预处理命令:简单的文本替换,不包括类型信息,并且可被任意修改。
类型常量:包括类型信息,并且可以设置其使用范围,而且不可被修改。
}
Enum类型:的命名与类的命名规则一致Enum中枚举内容的命名需要以该Enum类型名称开头。
typedefNS_ENUM(NSInteger,UIViewAnimationTransition) {UIViewAnimationTransitionNone,
UIViewAnimationTransitionFlipFromLeft,
UIViewAnimationTransitionFlipFromRight,
UIViewAnimationTransitionCurlUp,
UIViewAnimationTransitionCurlDown,};
范型:建议在定义NSArray和NSDictionary时使用泛型,可以保证程序的安全性。
NSArray<NSString *> *testArr = [NSArray arrayWithObjects:@"Hello", @"world", nil];
NSDictionary<NSString *, NSNumber *> *dic = @{@"key":@(1), @"age":@(10)};
二、代码注释规范
1.属性注释 /* name /
2.方法的注释使用Xcode,自带注释快捷键:Commond+option+/
/*
@param tableView
@param section
@return
*/
3.单行注释,/+空格
//TODO:标记一些未完成的或完成的不尽如人意的地方}
三、编码规范
编码规范就是为了保证写出来的代码可复用, 易维护, 可扩展。
每个模块(或者函数)职责要单一,架构方面多了解。
语法糖的使用
使用带有 @ 符号的语法糖来生成 NSNumber 对象能使代码更简洁。
nil 检查
// 正确,直接判断
if (!objc) {
...
}
// 错误,不要使用 nil == Object 的形式
if (nil == objc) {
...
}
属性的线程安全
定义一个属性时,编译器会自动生成线程安全的存取方法( Atomic ),但这样会大大降低性能,特别是对于那些需要频繁存的属性来说,是极大的浪费。所以如果定义的属性不需要线程保护,记得手动添加属性关键字 nonatomic 来取消编译器的优化。
Delegate 要使用弱引用
一个类的 Delegate 对象通常还引用着类本身,这样很容易造成引用循环的问题,所以类的 Delegate 属性要设置为弱引用。
参考资料:
iOS开发代码规范(通用)Objective-C开发编码规范
【iOS】命名规范Ios Code SpecificationApple Coding Guidelines for Cocoa
网友评论