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


命名规范

项目名都遵循大驼峰命名。例如: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开发规范(超详细的)

一份可以落地靠谱iOS开发规范的更多相关文章

  1. 一份完整的阿里云 Redis 开发规范,值得收藏!

    来源:yq.aliyun.com/articles/531067 作者:付磊-起扬 本文主要介绍在使用阿里云Redis的开发规范,从下面几个方面进行说明. 键值设计 命令使用 客户端使用 相关工具 通 ...

  2. [置顶] iOS开发规范

    iOS代码编程规范 详细讲解代码该如何写,怎样写,如何规范. 什么样的代码是最美的,本文档会给你讲解 iOS代码编程规范........................................ ...

  3. iOS 开发规范

    公司来了大牛  是绝好的学习机会 今天分享了我们一个代码规范 比如UITableViewCell 1.首先根据这个cell 需要的数据源 建一个数据model ,只针对于 该cell  好处:数据独立 ...

  4. ios开发入门资料整理

    说到 iOS 开发,自己学得也很浅.不过至少独立一人完成了一个应用的开发到 App Store 上线整个过程.既然有人让我说些推荐和建议,就分享一下. 首先建议阅读 Start Developing ...

  5. [iOS]关于零基础学习iOS开发的学习方法总结

    关于零基础学习iOS开发的学习方法总结 最近很多零基础来参加蓝鸥培训的学生经常会问到一些学习方法的问题,就如下我自己见过的好的学习方法一起讨论一下. 蓝鸥iOS开发技术的学习路线图 程序员的主要工作是 ...

  6. IOS开发如何入门

    说到 iOS 开发,自己学得也很浅.不过至少独立一人完成了一个应用的开发到项目上线整个过程.分享一下自己的建议和想法. 首先建议阅读 Start Developing iOS Apps Today,你 ...

  7. iOS开发请您把握现在 — 面向未来学习

    iOS开发请您把握现在 — 面向未来学习 这一篇文章,如果你是一名iOS开发正好也处于开发晋升瓶颈迷茫期,不妨停下你的脚步,花五分钟看看,兴许有你需要的!文章结尾有彩蛋 群里常见的唱哀 iOS现在到底 ...

  8. iOS开发系列--App扩展开发

    概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...

  9. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

随机推荐

  1. 【node】node的核心模块---http模块,http的服务器和客户端

    nodejs事件机制 ##### http服务器和客户端 node.js标准库提供了http模块,其中封装了一个高效的http服务器和一个简易的http客户端 HTTP服务器 1. http.crea ...

  2. EJB JBOSS的安装

    下载地址:http://www.jboss.org/jbossas/downloads 下载JBoss 4.2.3-->解压 启动:bin-->run.bat 管理后台:www.local ...

  3. linux 源码包之脚本安装包的安装

    脚本安装包 脚本安装包并不是独立的软件包类型,常见的实际是源码包.是人为地把安装过程写成了自动安装脚本,只要执行脚本,定义简单的参数,就可以完成安装.非常类似于windows软件的安装方式.在linu ...

  4. 实现自定义Session

    1. 回话状态接口 /// <summary> /// 会话状态策略接口 /// </summary> public partial interface ISessionStr ...

  5. pytts3语音合成遇到的中文问题

    在使用pytts3语音合成时,遇到中文语音错乱.程序代码本身很简单,也是网上公认的一种写法: #coding: UTF-8import pyttsx3; engine = pyttsx3.init() ...

  6. Datastage重启服务

    使用DS开发job时,偶尔一个Job出现卡死现象,导致工作不能进展下去,有时候需要重启datastage服务才可以. DataStage在正常运行时候有以下两个主要的进程: (1)dsrpcd(DS的 ...

  7. python modules and packages

    https://realpython.com/python-modules-packages/ 在软件开发中,一个module是具有一些相关功能的软件集合,比如,当你在开发一个游戏时,可能会有一个模块 ...

  8. 【转】stropts.h: No such file or directory – How to Fix

    原文地址:stropts.h: No such file or directory – How to Fix 作者:xjc2694 It is a known issue that modern Li ...

  9. SQL Server ->> 存储过程sp_describe_first_result_set解析T-SQL语句的结果集结构信息

    返回 Transact-SQL 批处理的第一个可能结果集的元数据. 如果批处理没有返回结果,则返回一个空的结果集. 如果数据库引擎无法确定将通过执行静态分析来执行的第一个查询的元数据,则引发错误. E ...

  10. 如何快速开发一个支持高效、高并发的分布式ID生成器

    ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务.微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID.为每个消息产生一个ID等等,ID生成器也是进行无 ...