iOS代码规范文档
文件命名规范:
1. 项目统一使用类前缀ZY。
2. 分类命名+后面统一使用ZYExtension,例:NSDictionary+ZYExtension.h,常用分类定义在内部并写好文档注释。如果功能性分类内部方法较多可以考虑按功能命名。
3. model文件可按服务器接口名或字段名命名,view、viewModel和controller文件可按功能命名。
4. 切图命名:home_menu_chat,->模块_功能_具体名字,切图命名很重要,这点可与美术沟通,让他们直接命名好再给我们,可以大大提高开发效率,但千万不要使用中文。
代码规范:
1. 分类方法以zy_开头,可与系统或者第三方框架方法区分。
2. 全局用到的字符串或者基本数据类型尽量定义成常量而不是用宏。并且只在某一文件内部用到可用static修饰,并且不要暴露在.h文件。
3. 宏定义以ZY_开头,并且统一大写,以_为分隔标识。
4. 类内部方法按功能划分,统一使用#pragma mark <#xxxx#>划分。
5. 方法参数较多时,尽量换行让其参数对齐,提高可读性。
6. 方法属性注释尽量使用文档注释,可下载一个插件VVDocument.
7. 定义成员变量必须遵循apple规范添加下划线。
8. 控件和属性尽可能使用懒加载创建,这样就可以保证用到时再创建。注意使用了懒加载创建的就不要直接用下划线成员变量名访问了,应该用get方法访问。
9. 方法回调尽可能使用block回调,可提高代码聚合度,但是要注意循环引用问题,建议block内部都使用weak引用。
10. 声明字符串属性必须使用copy,代理使用weak,不过尽可能少用代理吧,用block回调更方便。
11. 注意方法和属性、成员变量的驼峰标识命名。
12. 析构函数- (void)dealloc最好放到类最上面,第一眼就可以看到这个方法,可以方便看到是否清空资源。
13. 单个方法代码尽量不要超过100行,单个文件代码不要超过800行,如超过了可以考虑进行重构优化。
14. 相同逻辑方法,或者多处用到的方法可以优先考虑抽成分类,其次考虑抽到一个工具方法类。
15. 定义控件或者控制器必须在后面加上控件名称,例如一个imageView->UIImageView *iconView,不要直接用UIImageView *icon。
16. 判断YES/NO/nil 采用这种写法
17. 加载图片建议自定义UIImage一个分类方法,例:[UIImage zy_imageNamed:@””]。能在改方法拦截,换肤可能会用到。
18. 所有网络请求以request开头。例: 返回结果用block并对应一个data模型,和error.当error有值时为请求错误。 建议使用的第三方框架: YYModel -> 字典转模型框架,性能目前与主流的框架相比性能较好,而且使用方便。 YYCategories -> 提供一些常用的分类方法,可以大大加快开发效率。 YYWebImage -> 加载网络图片框架,可以带有动画效果,比SDWebImage好用。 MJRefresh -> 下拉刷新控件 AFNetworking -> 网络请求 Pop -> facebook动画框架 SVProgressHUD -> HUD提示,一个单例类,全局共享,无需反复创建消耗性能 Masonry -> 自动布局框架 Realm -> 最近比较火的数据库框架,据说性能秒杀coreData和sqlite,且学习成本很低。 ReactiveCocoa -> 函数响应式编程框架。