一份可以落地靠谱iOS开发规范
列出来的都是个人觉得在团队合作,代码阅读,代码维护中比较重要的一些点,没有什么空格 间距华而不实的东西在里面。涉及 命名规范、编码规范、代码管理规范
命名规范
项目名都遵循大驼峰命名。例如: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开发规范的更多相关文章
- 一份完整的阿里云 Redis 开发规范,值得收藏!
来源:yq.aliyun.com/articles/531067 作者:付磊-起扬 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 通 ...
- [置顶] iOS开发规范
iOS代码编程规范 详细讲解代码该如何写,怎样写,如何规范. 什么样的代码是最美的,本文档会给你讲解 iOS代码编程规范........................................ ...
- iOS 开发规范
公司来了大牛 是绝好的学习机会 今天分享了我们一个代码规范 比如UITableViewCell 1.首先根据这个cell 需要的数据源 建一个数据model ,只针对于 该cell 好处:数据独立 ...
- ios开发入门资料整理
说到 iOS 开发,自己学得也很浅.不过至少独立一人完成了一个应用的开发到 App Store 上线整个过程.既然有人让我说些推荐和建议,就分享一下. 首先建议阅读 Start Developing ...
- [iOS]关于零基础学习iOS开发的学习方法总结
关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...
- IOS开发如何入门
说到 iOS 开发,自己学得也很浅.不过至少独立一人完成了一个应用的开发到项目上线整个过程.分享一下自己的建议和想法. 首先建议阅读 Start Developing iOS Apps Today,你 ...
- iOS开发请您把握现在 — 面向未来学习
iOS开发请您把握现在 — 面向未来学习 这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋 群里常见的唱哀 iOS现在到底 ...
- iOS开发系列--App扩展开发
概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...
- iOS开发中静态库制作 之.a静态库制作及使用篇
iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...
随机推荐
- angular2 引入jquery
(注:以下命令都是在项目文件夹根目录下运行的,保证下载的文件都在项目的node_modules文件夹里面) 1. 运行 npm install jquery -save 后会发现在package.j ...
- Flutter:Slivers大家族,让滑动视图的组合变得很简单!
今天呢,我小拉面主要想给大家讲一讲Flutter中的Slivers大家族的使用场景和方法.开发过列表布局的同学们应该对Slivers系列的控件不陌生,或多或少都用过这个库中的控件,来解决复杂的滑动嵌 ...
- Dialog向Activity传递数据
PopupDialog中声明一个内部接口PriorityListener,接口中声明一个回调函数refreshPriorityUI,用于在 Dialog的监听事件触发后刷新Activity的UI显示. ...
- mybatis resultMap 映射配置
现有数据库表: CREATE TABLE `dept_p` ( `DEPT_ID` ) NOT NULL, `DEPT_NAME` ) DEFAULT NULL, `PARENT_ID` ) DEFA ...
- LeetCode 题解之Add Binary
1.题目描述 2.题目分析 使用string 的逆向指针,做二进制加法,注意进位问题就可以. 3.代码 string addBinary(string a, string b) { string::r ...
- ASP.NET MVC 使用Remote特性实现远程属性验证
RemoteAttribute是asp.net mvc 的一个验证特性,它位于System.Web.Mvc命名空间 下面通过例子来说明 很多系统中都有会员这个功能,会员在前台注册时,用户名不能与现有的 ...
- Jquery组织Form表单提交之Form submission canceled because the form is not connected
有时候导出Excel时需要根据某些条件筛选数据,然后将数据通过NPOI生成Excel并导出.组织数据时可以通过放到一个表单中,某些场景是使用脚本(如:jquery)组织一个form(通过字符串拼接), ...
- [UI] Elastic Stack & scrollReveal.js
Elastic Stack & scrollReveal.js Elastic Stack http://freebiesbug.com/code-stuff/elastistack-js-d ...
- [翻译] GCDObjC
GCDObjC https://github.com/mjmsmith/gcdobjc GCDObjC is an Objective-C wrapper for the most commonly ...
- PowerShell管理SCOM_批量设置维护模式(下)
#定义存储需要置为维护模式的计算机名称列表$serverlist = "C:\scomm\servers.txt"#定义RMS服务器名称$rmsServerName=”scomw. ...