一、关于本文档
1、本文档的书写目的
    《iOS项目的命名规范》的书写目的,在于让后续参加到该项目的iOS开发人员通过阅读该文档,了解在当前iOS项目的代码中的命名要求并严格按照本文档执行,以便保证代码的更好阅读与维护。

2、本文档的使用范围
    《iOS项目的命名规范》在iOS项目中被强制要求执行。将本文中的WSF或者wsf替换成代表项目的前缀(请用三个大写字母),即可用于其他iOS项目。

3、本文档的更新负责人
    《iOS项目的命名规范》由本ID和同事共同协商讨论制定,由本ID负责编辑、修改和后续的版本更新。

二、目录结构

三、新建【业务模块文件夹】
1、文件夹的名称需要体现该模块的功能概括。
比如:支付系统、订单

2、二级文件夹根据编程设计模式分类命名,需要从下面词语中取词:
ViewModel、Model、View、ViewController、其他

四、新建【子类】
1、类名
(1)遵循大驼峰命名法。
(2)WSF+模块概括名+功能分区名+父类的惯用后缀。比如:WSFOrderListVC
(3)为了整个项目代码的整洁与统一,建议使用List、Detail、Message、TView、Cell、VC、TVC、VM等字样。
(4)模块概括名一定要是统一的、明确的、唯一的代表模块名称。
(5)父类的惯用后缀的意思是:如果要从其他框架继承子类,那么必须遵循其命名惯例。比如,继承UIView的子类名称必须以View结尾。

2、属性名
(1)遵循小驼峰命名法、避免缩写。
(2)后缀体现属性的数据类型。比如:orderPriceLabel、orderLimitsArray。
(3)使用长的、描述性的命名方向。比如settingButton而不是setBtn。
(4)要求NSString *nameString; 而不是NSString* nameString; 或者NSString * nameString;。

3、属性定义
(1)定义属性的参数顺序排序:原子性、读写、内存管理。比如:@property (nonatomic, readwrite, copy) NSString *nameString;
(2)BOOL类型的属性,需要为其getter方法带is前缀。getter方法放在内存管理限定符前面,比如:@property (nonatomic, readonly, getter=isEditable, assign) BOOL editable;

4、实例变量名
(3)下划线开头
(2)遵循小驼峰命名法、避免缩写。
(3)后缀体现属性的数据类型。比如:_orderPriceLabel、_orderLimitsArray。

5、公有方法名
(1)遵循小驼峰命名法、避免缩写。
(2)不要使用“and”这个词,它不应该用来阐明有多个参数。

6、私有方法名
(1)遵循小驼峰命名法、避免缩写。
(2)父类是Cocoa框架:p_开头。
(3)父类是其他框架:以自己一贯的前缀(小写)+下划线开头或者wsf_。比如:abc_、wsf_。

7、纯C函数
(1)遵循小驼峰命名法、避免缩写。
(2)加上WSF为前缀。

8、全局变量
.h文件
extern NSTimeInterval WSFPersonModelAnimationDuration;
extern NSString *WSFPersonModelErrorMessage;
 
.m文件
NSTimeInterval WSFPersonModelAnimationDuration = 0.3;
NSString *WSFPersonModelErrorMessage = @“ErrorMessage”;

(1)遵循大驼峰命名法、避免缩写。

9、枚举名
(1)遵循大驼峰命名法、避免缩写。
(2)使用OC的枚举方式。
(3)枚举对象名:WSF+枚举范围概括名+Type。比如:WSFAlipayResultCodeType
(4)枚举种类名:WSF+枚举范围概括名+Type_某种情况名。比如:WSFAlipayResultCodeType_success。

10、协议名
(1)遵循大驼峰命名法、避免缩写。
(2)代理协议:类名+Delegate。比如:WSFOrderListChangedDelegate。
(3)数据源协议:类名+DataSource。比如:WSFOrderListDataSource。
(4)普通协议:类名+Protocol。比如:WSFOrderListVCProtocol。

五、新建【分类】
1、分类名
(1)类名+标识前缀+扩展标识。
(2)遵循大驼峰命名法、避免缩写。
(3)WSF或者自己一贯使用前缀(大写)+下划线为前缀。比如:NSString (WSF_HTTPManager)、NSString(ABC_HTTPManager)。

2、方法名
(1)遵循小驼峰命名法、避免缩写。
(2)wsf或者自己一贯使用前缀(小写)+下划线为前缀。比如:- (void)wsf_urlEncodedString;、- (void)abc_urlEncodedString;

六、新建【协议】
1、协议名
(1)遵循大驼峰命名法、避免缩写。
2、方法名
(1)遵循小驼峰命名法、避免缩写。
(2)如果是代理协议,以发送代理的对象类名作为代理方法名的开始(去掉类名的前缀,并且遵循小驼峰命名法)。

七、新建【第三方库的封装】
(1)手动管理:比如使用MJRefresh框架,需要将它的类名全部加前缀以避免命名空间冲突。比如:命名为WSFMJRefresh。
(2)pod管理:不需要特殊处理。

八、新建【常量】
1、私有常量
.m文件
static const NSTimeInterval kAnimationDuration = 0.3;
static NSString *const kErrorMessage = @“ErrorMessage”;

2、公开常量
.h文件
extern const NSTimeInterval WSFPersonModelAnimationDuration;
extern NSString *const WSFPersonModelErrorMessage;
 
.m文件
const NSTimeInterval WSFPersonModelAnimationDuration = 0.3;
NSString *const WSFPersonModelErrorMessage = @“ErrorMessage”;

说明:
(1)遵循小驼峰命名法、避免缩写。
(2)在声明公开常量时,也可以使用FOUNDATION_EXPORT替换extern。

3、常量名称的常用命名方法:若常量局限于某“编译单元”,也就是“实现文件”之内,则在前面加字母k;若常量在类之外可见,则通常以WSF+类名为前缀。

九、新建【通知】
1、按照公共常量方法处理。
2、以Notification为后缀。

iOS项目的命名规范的更多相关文章

  1. SSH框架项目开发命名规范

    SSH 框架项目开发命名规范   一.各层包及类命名规范   总体原则:包名所有字母小写,类名采用 "驼峰标识",具体如下:   1. Action 类      包命名规范:co ...

  2. iOS-OC命名规范

    IOS开发(OC)中的命名规范 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结构也算清晰,因为我一直以来都是代码看的多写的多,但是总结的比较少,知识经常不成 ...

  3. iOS项目重命名以及Xcode修改Scheme名称图文详解 (yoowei)

    在iOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.温馨提醒:记得备份. 看到项目名称,总感觉有点low,所以尝试着要将其更改一下. 项目原结构如下: 更改后的项目结构如下: 下面开始更改操作 ...

  4. Javaweb项目的命名规范

    项目名称:一般是英文 包名:公司域名的倒写,例如com.baidu 数据访问层:dao,persist,mapper 实体:entity,model,bean,javabean,pojo 业务逻辑:s ...

  5. [旧][Android] 命名规范和编码规范

    备注 原发表于2016.05.07,资料已过时,仅作备份,谨慎参考 前言 本文适用范围:已参加项目开发的人 写这篇文章的目的是为方便地对代码进行管理,让整个团队的代码规范化.这里的部分规定可能和你在其 ...

  6. iOS开发(OC)中的命名规范

    开小差:最近发现自己有一个经验主义的毛病,不太容易接受新的知识,这对从事技术研发的人来说不太合理,需要改之. 正文:通过读写大量代码我有自己的一套编程思路和习惯,自认为自己的编码习惯还是不错的,代码结 ...

  7. ios开发之--编码及命名规范

    做了几年的开发工作,因为是半路出的家,所以对这块一直都没怎么重视,所以在工作中,出现了很多的尴尬场景,编码和命名的规范是一定得有的,最起码一个团队之间的规范也是很有必要的.面向对象的编程,其实很好理解 ...

  8. ios项目icon和default图片命名规则

    一.应用图片标准iOS控件里的图片资源,苹果已经做了相应的升级,我们需要操心的是应用自己的图片资源.就像当初为了支持iPhone 4而制作的@2x高分辨率版本(译者:以下简称高分)图片一样,我们要为i ...

  9. java项目命名规范

    一.命名规范 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{} 4. 变量 ...

随机推荐

  1. web项目jsp出现The superclass javax.servlet.http.HttpServlet was not found on the Java Build Path错误

    原因是Javaweb工程类中没有添加Tomcat运行时相关类导致. 解决方式如下:出错的文件---->>build path---->>config build path--- ...

  2. Excel导出插件

    前言 一个游戏通常需要10多个Excel表格或者更多来配置,一般会通过导出csv格式读取配置. 本文提供导出Excel直接生成c#文件,对应数据直接生成结构体和数组,方便开发排错和简化重复写每个表格的 ...

  3. 谦先生的程序员日志之我的hadoop大数据生涯一

    从一个初级程序员到高级程序员的经历 你好!我是谦先生,我是茫茫程序猿中的一猿,平凡又执着. 刚入行的时候说实话,啥都不懂,就懂点皮毛的java,各种被虐狗的感觉.又写js又写css又写后台...慢慢被 ...

  4. Xcode插件失效以后的处理方法

    全在终端执行,依次输入如下命令 //获取DVTPlugInCompatibilityUUID字段 defaults read /Applications/Xcode.app/Contents/Info ...

  5. win10 uwp 隐私声明

    本文讲的是如何去写隐私声明. 垃圾微软要求几乎每个应用都要有隐私声明,当然如果你不拿用户信息的话,那么用户声明是一个URL,我们应该把应用声明放在哪? 其实我们简单方法是把隐私声明Privacy Po ...

  6. Python+OpenCV图像处理(一)

    Python+OpenCV图像处理(一): 读取,写入和展示图片 调用摄像头拍照 调用摄像头录制视频 1. 读取.写入和展示图片 图像读入:cv2.imread() 使用函数cv2.imread() ...

  7. nodejs项目管理之supervisor||pm2||forever

    supervisor 是开发环境用. forever 管理多个站点,每个站访问量不大,不需要监控. pm2 网站访问量比较大,需要完整的监控界面. supervisor 特点: 代码修改,实时重启 安 ...

  8. php中get_headers函数的作用及用法的详细介绍

    get_headers() 是PHP系统级函数,他返回一个包含有服务器响应一个 HTTP 请求所发送的标头的数组.如果失败则返回 FALSE 并发出一条 E_WARNING 级别的错误信息(可用来判断 ...

  9. 2D特效和3D特效

    2D居中效果 div{ width: height: backgroundcolor: position:absolute; left:50%; top:50%; transform:translat ...

  10. Java跨域问题的处理详解

    1,JavaScript由于安全性方面的考虑,不允许页面跨域调用其他页面的对象,那么问题来了,什么是跨域问题? 答:这是由于浏览器同源策略的限制,现在所有支持JavaScript的浏览器都使用了这个策 ...