我的个人代码规范文档
我的个人代码规范文档
因为很多人不适应我的代码规范 所以只仅供参考。不知道从哪里说起,就想到那里说到那里。
1 .属性的声明
属性可以用到下面的几个单词进行声明,只针对ARC开发环境
Strong
Copy
Assgin
Weak
我说一下上面几个单词用到的地方,在除去NSString Block之外所有的对象应该声明为Strong
我现在的团队习惯声明为Weak 创建局部对象AddSubView之后 之后指向,这是错误的。因为你的指针只是被AddSubView保留,如果什么时候Remove 你的属性就为nil.
在NSString和Block声明地方使用Copy属性。有的人NSString使用Strong,我们都知道Strong和Copy分别是指向一个对象和从新生成一个对象,可以根据实际情况来声明,一般要使用Copy。
对于基本的数据类型一定要使用Assgin
对于XIB的属性使用Weak 代理,还有一些弱引用对象。
2.尽量多使用属性懒加载
可以在实现的文件里面把属性的懒加载也就是get方法卸载页面的最下面,这样我们就只关注于上面的内容了。
3 允许修改的对象属性尽量使用readlony
对于一些控件我们只需要用户修改控件的属性,就可以在头文件声明readonly 实现文件再次声明。
4 文件夹的分层
我也喜欢进行Cocoapods托管,但是一些第三方库还是不支持。
Defines(存放定义的颜色 枚举 工程配置 字符串等等。记得这些配置我习惯分文件存放)
FrameWork(存放第三方的FW 和系统的)
Libs(第三方开源代码的库)
Plugins(对于我来说俗称插件话 管理各个功能块的插件 比如支付插件 管理各种支付)
Categories(存放自定义的各个分类)
Protocols(存放自定义个协议类)
Tools(项目用到的协议工具 比如汇率转换等等)
Requests(基于自己工程封装的请求库 只针对自己工程)
Controller (试图)
Controller(试图控制器)
View (分离的试图)
Models(数据模型)
ViewModels(用于数据解析)
Api(用于请求)
AppDelegate(存放AppDelegate文件)
Resouses(存在Plist 图片等等)
5 可以采用MVVM 的变种
自从我开始用MVVM 我就觉得和我之前的一种很像
ViewController的View可以单独提出来 VC只负责Push的跳转 发起请求
View 负责VC的全部的试图 可以分离很多块
Model用于和后台接口数据模型的解析
ViewModel负责请求数据和解析数据
API负责整个VC的接口
6 命名方面
很多文档都有 我就只说几点
命名一定要体现这个是干什么的 比我headImageView,我可以猜出来是头像 而且是UIImageView控件
全局属性使用_开头和属性的最好保持一致。