命名规范
对于命名规范这里就不多少了,苹果给的有官方的文档《苹果Cocoa编码规范》。简单总结一下就是遵循清晰简洁、见名知意、驼峰命名的原则。其实命名参照系统的Api就可以了,如成员变量、类方法、枚举、block等。
前缀
加前缀可以防止和苹果以及其他第三方库的命名冲突。如是封装SDK内部引用了第三方库时,也应将三方库重命名。
排版空格
- 关键词和操作符之间加适当的空格。 [必须]
正确的示范: int count = 5; //注意 = 之间的空格 错误的示范: int count=5;
- 方法的声明和定义在-号或者+号与返回值之间应留一个空格。而返回值与方法名以及方法名和参数列表之间都不应该有空格例如
- (void)doSomethingWithString:(NSString *)theString { ...}
命名禁忌
- 不了用下划线、破折号,这不止看着丑得问题。
- 不要用汉字表情(不要以为这是玩笑,真有人这么干过)
- 不要用类似a1、a2这种命名变量
*不要用汉语拼音
硬数据问题
项目中尽量减少硬数据,当然作为移动开发项目中硬数据占比会相对大一点,但也不要直接写死在代码里。如不得不用硬数据,也请用字符串常量和宏从代码块里抽离到公共文件里统一管理。
能用字符串常量的,就不要用宏
- 这样编译速度快
- 字符串可直接进行比较
颜色值定义
现在项目UI给layout时,颜色基本都是给十六进制的颜色值,以前碰到的项目里面总是大量的颜色值硬数据或者是重复定义的值。
- 颜色值转换最后选位操作,而不是字符串
方法如下: +(UIColor*)colorWithRGBValue:(NSInteger)rgbValue{ return [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0x00FF00) >> 8))/255.0 blue:((float)(rgbValue & 0x0000FF))/255.0 alpha:1.0]; }
- 颜色值命名
个人总结了一个比较方便的命名,配合xcode的联想提示,我们在用时就不需要查该值得颜 色值到底对应的是哪个变量了。 格式: 主颜色+颜色值(前两位) 如: #define whiteColor_FF [UIColor colorWithRGBValue:0xFFFFFF] #define whiteColor_F5 [UIColor colorWithRGBValue:0xF5F5F5]
条件判断逻辑
- 优先使用三目运算符
表达式1 ? 表达式2 : 表达式3;
- 判断条件可用switch语句时,就不要用if语句
switch ($expr) { case 0: // do something break; case 1: case 2: case 3: case 4: // do something default: // do something break; } 注意default这里最后做一下容错
- 在使用if-else 时,判断条件一定要补全,注意容错
错误用法1: if ($expr1) { // do something } if ($expr2) { // do something } if ($expr3) { // do something }
错误用法2: if ($expr1) { // do something }else if ($expr2) { // do something }
正确用法: if ($expr1) { // do something } elseif ($expr2) { // do something } else { // do something } 最后不要没有else,else这里往往需要做容错处理,遗漏后会导致各种情况考虑不全面从而产生bug。
Success与Failed
不要遗漏failed的逻辑,如网络请求、自定义block的failed一定要做好失败的容错处理。
Tableview
不要将数据写到cell内,也不要在cellForRowAtIndexPath内对cell的属性一个个赋值。
总结
这里只是将项目中遇到的一些奇葩代码做一个记录,避免这些低级错误。也许你不会这么去做,但如果不定规范到时候项目中还是会出现各种奇葩代码,即便定了规范,普遍的问题最好还是强调一下,因为规范可能太长,不是谁都能有耐心细致的看完,并严格执行下去,最终还是要Review来保证代码质量。
网友评论