列出来的都是个人觉得在团队合作,代码阅读,代码维护中比较重要的一些点,没有什么空格 间距华而不实的东西在里面。涉及 命名规范、编码规范、代码管理规范
命名规范
项目名都遵循大驼峰命名。例如:MSMobileStore
Bundle Identifier 命名
Bundle Identifier:采用反域名命名规范,全部采用小写字母,以域名后缀+公司*域名+应用名形式命名,例如:com.comtop.mobilestore
类名
类的命名都遵循大驼峰命名。一般是:前缀 + 功能 + 类型。例如:MS + Web + ViewController
。
在实际开发中,一般都会给工程中所有的类加上属于本工程(或加上模块名)的前缀。
常用控件类命名类型对照表(下表中前缀为:MS
,如果用到下表中没有列举出来,请去掉UI首字母
,遵循实际规则即可。)
控件名 | 类型 | 示例 |
---|---|---|
UIViewController | ViewController | MSBaseViewController |
UView | View | MSBaseView |
UITableView | TableView | MSActivityTableView |
UITableViewCell | Cell | MSActivityAppItemCell |
UIButton | Button | MSSelectButton |
UILabel | Label | MSSuccessLabel |
UIImageView | imageView | MSAppImageView |
UITextField | TextField | MSNameTextField |
UITextView | TextView | MSSuggestTextView |
其它类相关对照表
功能 | 类型 | 示例 |
---|---|---|
代理类 | Delegate | MSAppCommentViewModelDelegate |
业务类 | Manager | MSAppCommentViewModel |
模型类 | Model | MSAppCommentModel |
布局类 | Layout | MSKeywordscollectionViewlayout |
类目 |
XXX+(范围,例如Extension, Additions 或者功能,例如Frame,Nib,Block) |
MSUIButton+Additions、MSUIButton+Block |
变量和方法
变量和方法的命名都遵循小驼峰命名。例如:textVariableStr
, - (void)textAction
响应事件。
常量
宏:小写k+大驼峰 即为:#define kUserAgeKey @“ageKey”
宏:小写k+大驼峰 即为:#define kUserAgeKey @“ageKey”
全局常量:工程前+缀全大写,下划线隔开 即为:extern const NSString MW_USER_AGE_KEY
参数名
参数名以小驼峰命名,尽量参考苹果原生方法风格编写。尽量可读性好,看到方法名就知道这个方法是用来干什么的。参数应该避免用单个字符命名。例:- (void)setDataImageUrl:(NSString *)imageUrl name:(NSString *)nameStr content:(NSString *)contentStr
编码规范
- 尽量使用懒加载,在控制器分类时有提及和要求,其它自定义类按照控制器格式分类,没有的分类不写即可。
- 对于类型的判断,避免魔鬼数字,使用枚举替代
- if,case等后面的括号不要省略。
- 遵循一般代码规范,多模仿苹果API。
- 建议项目统一使用Masonry和xib结合的方式布局。不允许出现直接设置frame的情况。如果是纯代码的项目,不允许出现xib和拉约束的情况。不建议使用纯storyboard开发。
- 注意重用,避免copy大段重复代码
- 建议使用MVVM MVP等代码结构 避免VC过于臃肿难于维护
- 遵循一般代码规范,多模仿苹果API。
代码管理规范
模块化
- 可复用组件抽成独立的模块,gitlab上建立仓库
- 业务模块形成独立组件,可独立运行