• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

一篇走心的iOS代码规范

武飞扬头像
iOS大鑫
帮助1

学新通

前言

关于代码规范的重要性这里不做过多解释,能看到这篇文章说明你已经开始重视代码规范了(代码规范看起来是在限制你的自由和发挥,其实它是在间接的帮助你变得更优秀。)。

适当的代码规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一方式一起做事,进而提高工作效率,降低沟通成本。代码的字里行间流淌着的是软件和程序员的血液,质量的提升是尽可能少踩坑、杜绝踩重复的坑,切实提升系统稳定性,码出质量

根据约束力度,暂时把规范约定为2个等级,分别是 必须建议

(一)命名规范


1. 通用命名规范

Tips:
所有的命名都应该遵循3个基本原则,即“清晰性”、“一致性”、“不要自我指涉”。

  • [必须] 清晰性:好的命名应该是能自我描述的。
 正例:
    removeObject:、[string stringByReplacingOccurrencesOfString:@"1" withString:@"2"]
 反例:
    remove:(不清楚,要删除什么?)、string.replace("1", "2")
(是将"1"替换成"2"还是将"2"替换成"1"?是将第1个"1"替换成"2"还是将所有的"1"都替换成"2")
  • [必须] 一致性:命名应该和上下文乃至全局保持一致性,相同类型或者具有相同作用的变量的命名方式应该相同或类似。

    正例:
    NSDictionary、NSArray、NSSet这几个集合类都是用count来表示数量而不是一个用count其它的用amount或其他单词,这体现了命名的一致性。
    
    @property (readonly) NSUInteger count;
    
    
  • [必须] 禁止自我指涉:命名不要自我指涉。通知、掩码常量等除外(通常指那些可以进行按位运算的枚举值)。

    正例:
    NSString
    反例:
    NSStringObject
    
  • [必须] 杜绝过度缩写,严禁自创缩写(例如把button缩写为btn);国际通用缩写名称除外(例如ATMGPS)。

Tips:
你明白这个缩写的意思不代表其他人也一定会明白,你的代码可能会被任何人阅读,而阅读的人来自不同的地方接受不同的教育不同的文化,所有建议一般不要乱使用缩写,只使用那些国际通用缩写。如果为了缩写创建一个缩写对照表只会增加代码阅读复杂度。

    正例:
    destinationSelection、setBackgroundColor
    反例:
    destSel、setBgColor
  • [必须] 杜绝无意义的拼音,国际通用名称或者地名人名除外(例如alibabataobaohangzhou)。

    反例:
    DaZhePromotion(打折)
    
  • [必须] 命名要尽可能的清晰并简洁,如果两者不能兼得,则以清晰为主。

    正例:
    insertObject:atIndex:
    反例:
    insert:at:(不清晰,插入什么?at代表什么?)
    
  • [必须] 代码和注释中都要避免使用任何语言的种族歧视性词语。

    正例:
    secondary
    反例:
    slave
    
  • [必须] 类名、协议名、函数名、常量名、枚举名等一些全局命名需要添加前缀,前缀需要大于2个字符且全部大写。

    Tips: 系统保留任意两个字符作为前缀的使用权,
    包括但不限于NS、UI、CG、CF、CA、WK、MK、CI、NC;前缀若等于2个字符可以考虑添加_。
    正例:
    ZT_LoginViewController
    反例:
    ZTLoginViewController
    
  • [必须] 类名、协议名、函数名、常量名、枚举名等一些全局命名遵循首字母大写的驼峰命名方式,首个单词是HTTP这种特殊词除外。

  • [必须] 方法名、属性名等一些非全局命名遵循首字母小写的驼峰命名方式命名,首个单词是HTTP这种特殊词除外。

  • [必须] 成员变量需要以_开头。

    正例:
    NSString *_nameString;
    
  • [建议] 在给常量或变量命名时,尽量将表示类型的名词放在词尾,以提升辨识度。

    正例:
    nameLabel、nameString
    反例:
    name(name是字符串还是什么?)
    
  • [建议] 如果模块、接口、类、方法使用了模式,在命名时尽量体现出具体模式。

    正例:
    OrderFactory、LoginProxy
    
  • [建议] 局部临时变量命名可以加上标识符作为前缀。

    正例:
    t_label、t_string(t在这里表示temp)
    

2. 类命名规范

首先作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS开发交流群:130 595 548,不管你是小白还是大牛都欢迎入驻 ,让我们一起进步,共同发展!(群内会免费提供一些群主收藏的免费学习书籍资料以及整理好的几百道面试题和答案文档!)

  • [必须] 类名命名风格由"前缀 类的名称 类的类型"3个部分组成,前缀必须大于2个字符且全部大写(如果等于2个字符可以添加_);类的名称遵循首字母大写驼峰式命名,类的名称要能表达出该类的功能;类的类型必须使用全称,严禁使用缩写(例如vc代替viewControllercell代替TableViewCell),命名方式和名称命名一样首字母大写。
   正例:
WXYZ_LoginViewControler WXYZ_表示前缀,Login表示该类跟登录相关,ViewController表示该类是一个视图控制器而不是View。

3. 方法命名规范

  • [必须]</

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgjhhjg
系列文章
更多 icon
同类精品
更多 icon
继续加载