前言:
每个人都有不同的编码习惯和代码风格 虽说我们主要目的是完成需求 提高用户体验 但无规矩不成方圆 统一代码规范对开发者来说会有很多帮助
一、代码规范的好处
1、提高团队合作效率
通常一个项目是由多个人共同开发 如果代码没有好的规范和统一 代码风格必定有很大差异 增加互相理解的难度 和 代码交接成本 规范代码 会使多人之间代码互通更加便捷
2、降低bug率
开发中通常存在很多重复代码的堆积 往往出现bug的不是很复杂的逻辑 而是代码杂乱带来的一些疏忽 甚至有很多线上很严重的p0级bug 解决起来也无非就是代码层面忽略了一个细节 这些逻辑上的不够清晰 往往就是代码不够规范造成的
3、降低后期维护成本
开发中让人最头疼的问题通常不是新代码 而是旧代码的维护 没有好的代码规范 可能自己都无法轻易读懂当时自己的逻辑 如果是维护别人的代码 难度就更大 所以好的代码风格和规范有助于项目的长期维护
4、有助于代码审查codeReview
完成某个需求 除了自测功能外 代码审查codeReview也担任了重要的角色 开发并不像测试 有完整的测试流程和用例 所以在开发阶段很容易照顾不到所有场景 特别是边界情况 所以 代码回顾 会让我们发现一些逻辑上的漏洞 有必要的话 小组内互相codeReview也是一件很好的方式 但前提依然是 各个同学有统一的代码规范 不然很难第一时间发现代码上的问题
5、提升程序员个人能力 有助于程序员个人的提升
一种好的代码风格是一种习惯 和 自我约束 习惯这种方式以后 会让程序员自我要求更高 做事更加精益求精
二、代码规范
基本原则
1、模块文件夹的命名要见名知义 大驼峰
首页模块 Home
我的页面 My
订单列表 OrderList
模块命名
2、控制器命名 加 项目前缀 以VC结尾 主体大驼峰
首页控制器 BMWHomeVC
我的页面控制器 BMWMyVC
订单列表控制器 BMWOrderListVC
3、类名、协议名、枚举名遵循大驼峰命名方式
首页通用协议 BMWHomeProtocol
首页活动类型枚举 BMWHomeActivityType
4、属性名遵循小驼峰命名方式 以属性的类型结尾
控件属性名 如
登录按钮 loginButton
密码输入框 passwordTextField
头像图片 headImageView
标题标签 titleLabel
背景视图 backgroundView
模型 如
用户信息模型 userInfoModel
视图模型 如
用户信息视图模型
userInfoViewModel
字符串 如
历史记录字符串 historyString(能够见名知义的可简写如historyStr)
字典 如
参数字典 paramsDic
5、属性创建方式 加空格 属性之间加空行 参考如下
简单属性创建方式
复杂属性创建方式
BOOL类型的属性重写下getter方法
BOOL类型属性创建
6、方法名遵循 小驼峰命名方式 且 见名知义 且 方法名前后留空格 且 左半括号不要换行 且 两个方法之间留空行
方法名命名规范示例
7、单行注释使用三斜杠 与注释内容之间加空格
单行注释命名格式
8、多参数方法注释 使用 option + cmd + / 并写清楚每个参数含义
多参数方法注释
9、if else 等逻辑判断 前后加空格
逻辑判断书写规范
10、模块间结构统一 达到高度一致性
如 中英版搜索两个模块
模块架构参考
11、项目中的常量尽量不要直接写死 创建一个类专门管理它
项目中很多地方会使用一些常量 如果分散在代码中 不仅代码不够美观 后期修改也比较麻烦 入口统一管理 会便捷很多
常量使用错误示例
正确示例
12、创建文件时 在顶部写下当前文件的功能注释
如 订单列表页
订单列表页注释
13、创建单例使用sharedInstance方法名
14、资源文件夹 文件目录大驼峰 图片名称 下划线分割
资源文件
持续完善中......