前言:代码规范最终的目的是降低代码维护的成本。
代码规范的好处(网上一搜一大把):http://kdboy.iteye.com/blog/407572
一. 结构规范
1.文件夹的建立:注意创建的都是实体文件夹 参考链接http://blog.csdn.net/lvxiangan/article/details/21228215
2. MVC 三个文件夹 : Controller View Model
通常View 下面会有Cell 文件夹 Model 下会有Biz (业务处理类: 请求接口 组织数据)和 Entity(实体类)
3.继承关系
Controller 继承一个自定义的UIViewContrller eg:EMSuperVC
View 继承一个自定义的UIView eg:EMSuperView
自定义cell 继承UITableViewCell
4.类中源文件中的方法布局
1. 构造函数 (init)
2. 父类方法
3. 公共方法public method
4. 代理方法 delegate
5.响应事件response events
6. 私有方法privatelymethod
7. get set 方法
他们之间需要用#pragma mark - XXX 分开 使布局清晰
每个类型中的多个方法通过#pragma mark ------ zs20170716XXX 注释方便查找方法
5.MVC 之间的通信
Controller - > View 调用View 提供的public method 千万不要为了省事将VIew 的私有属性公开 后期维护成本太大 耦合性太大
View - >Controller block 回调
Controller -> Model 调用Model 提供的public method
Model - > Controller delegate 传值
6.类的导入:在源文件中导入类,头文件中用@class 声明类
7.每个函数方法的限制
7.1 每个方法只做一件事
7.2 行数要进行限制
8.方法的花括号另起一行,结构块花括号尾随语句之后
二.命名规则 总体必须遵从驼峰法则
1.类的命名
所有的类名均以EM开头 (公司名简称)
Controller : EM + 类描述 + VC
VIew : EM + 类描述 + VIew
Model 中 Entity : EM + 类描述 + 后台返回数据生成的字段
Model 中 Biz : EM + 类描述 + Biz
2.属性的命名 (变量的命名)
@property(nonatomic,strong) EMWalletView *viewWallet;
2.1小括号前后有空格
2.2 *与类名之间有空格 和属性命名之间无空格
2.3 UI类的命名:
2.3.1 UILable *labTitle;
2.3.2 UIView *viewBack;
2.3.3 UIButton *btnPay;
2.3.4 UITextField *tFLogin;
2.3.5 EMWalletView *viewWallet;
2.4 Controller 中的属性命名举例
@property(nonatomic,strong) EMTransactionRecordView *viewTransactionRecord;主View
@property(nonatomic,strong) EMTransactionRecordBiz *bizTransactionRecord;
2.5 View中Block 的定义和命名
block定义:类名 + Block 进行命名
eg:
属性命名:block + 去掉EM的类名
eg:
3.刷新方法的命名
- (void)reloadTableViewWithDataSource:(EMTradeRecordBaseClass*)entityTradeRecord;
- (void)reloadCellMessageWithDataSource:(EMTradeRecordList*)entityTradeRecord;
4.Biz中代理(delegate)协议的命名
协议的命名: 类名+Delegate eg:EMTransactionRecordBizDelegate
设置遵从协议的代理属性:
@property(nonatomic,weak,nullable)id<EMTransactionRecordBizDelegate>delegate;
协议方法的命名:
biz + 去掉EM和Biz的类名 + response(or other) + 返回的信息的描述
三.注释
1.所有的注释都需要写上 注释者和时间
2.Controller 头文件中 需要写上注释:说明这个类是做什么的,需要注意什么, 可以粘贴需求。
eg:
属性的注释规范/**<<#注释的内容#> */
@property(nonatomic,strong) EMTransactionRecordBiz *bizTransactionRecord;
eg:
4.public method 的注释 Common + alt + /
注释者+时间 + 这个方法是作什么的 + 参数的定义 + 返回的参数的定义
eg:
5.私有方法的注释
一般是#pragma mark ------ zs20170716XXX 方便内部的查找
如果需要可以参考4加上详细的参数注释
注意顺序:#pragma mark ——— zs20170716XXX 在上 详细注释在下
6.方法内部的注释
注释尽量写在这一行的后面 而不是这个行的上面 如果注释字数多可酌情处理 尽量用单行注释
eg:需要写上 注释者+时间
7.Model中的Entity的注释
服务器端返回的数据 往往需要我们生成对应的实体类
实体类的有些字段往往是允余的或者是现在没有用到的,这些字段也需要注释方便以后开发(此处优先级自行安排);
eg: