一份可以落地靠谱iOS开发规范

时间:2024-09-24 08:04:37

列出来的都是个人觉得在团队合作,代码阅读,代码维护中比较重要的一些点,没有什么空格 间距华而不实的东西在里面。涉及 命名规范、编码规范、代码管理规范


命名规范

项目名都遵循大驼峰命名。例如: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上建立仓库
  • 业务模块形成独立组件,可独立运行

Git提交规范

1.分支拉取是否正确。

拉分支只允许在develop上拉。

2.分支合并是否正确。

2.1 避免出现develop 合并到其他feature分支这种”倒挂合并“现象
2.2 避免出现feature分支合并到除develop以外的任何分支
2.3 创建release分支是否正确,release合并是否按照gitflow流程。
2.4 发版本之后检查是否有不用的feature分支没有删除,避免冗余
2.5 尽量避免develop merge into develop的情况,使得git流看得更清晰

3.是否按照规范提交代码

3.1 不允许直接在master上提交代码

参考链接:

iOS开发规范(超详细的)