美文网首页
iOS代码规范新解

iOS代码规范新解

作者: 好奇猫Care | 来源:发表于2017-12-13 17:23 被阅读0次

    命名规范

    对于命名规范这里就不多少了,苹果给的有官方的文档《苹果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来保证代码质量。

    相关文章

      网友评论

          本文标题:iOS代码规范新解

          本文链接:https://www.haomeiwen.com/subject/baviixtx.html