做了几年的开发工作,因为是半路出的家,所以对这块一直都没怎么重视,所以在工作中,出现了很多的尴尬场景,编码和命名的规范是一定得有的,最起码一个团队之间的规范也是很有必要的。面向对象的编程,其实很好理解,具体的操作都是由对象来完成,那么原则上,给对象命名的时候,应该清晰、简洁,让人一看就知道这个对象是负责那块的,话不多说,规范如下:

一、命名规范

1 基本原则

1.1 清晰

既清晰又简洁的命名最好,但以清晰为主,不要用单词简写(非常常用除外),尽量使用全称。你的命名应符合OC标准,让人一看就知道是什么意思,不要让人有疑问,尽量使用英文而不是拼音。

1.2 一致性

做某件事的代码通常都叫这个名字,比如tag、setStringValue,那你也这么叫。在你不确定怎么起名的时候请参照《Apple开发规范》。

1.3 驼峰原则

大驼峰(UserNameLabel):每个单词首字母大写

小驼峰(userNameLabel):除第一个单词外,其它单词首字母大写

2 示例:

2.1 类名:(以登录管理类为例)

定义:SBUserLoginManager

SB        : 统一前缀

User       : 用户

Login       : 登录

Manager    : 管理者

应用级别的类名(需要在其他项目中用到的类),可以不使用前缀或者使用自定义前缀

即为:PhotoBrowser或者XXPhotoBrowser

2.2 类别名:(基于UIImageView的网络请求图片类别)

定义:UIImageView+HPWeb    (类名+标识+扩展)

UIImageView : 要扩展的类名

HP : 专属标识

Web : 扩展功能

2.3 方法名:

使用小驼峰法,规范的方法名应该看起来像一个完整的句子,读过便知函数作用。

2.4 变量命名:

使用小驼峰法,为了让你的代码便于其它人了解,请使用单词全名按顺序拼接方式

普通变量、全局变量 无需添加下划线开头,成员变量需要以下划线开头(查看Objective-C 2.0,@property 和 @synthesize 命名规范)

2.5 常量(宏、枚举、全局常量、局部常量等):

定义1:小写k+大驼峰      即为:kUserAgeKey

定义2:以SB开头            即为:SBUserAgeKey

定义3:全大写,下划线隔开  即为:USER_AGE_KEY

用户登录类型

typedef NS_ENUM (NSInteger,SBUserLoginType){

SBUserLoginTypeNormal = 0 ,    // 常规登录

SBUserLoginTypeThirdParty,       // 第三方登录

SBUserLoginTypeNone,            // 未知

};

NSString *const kUserName = @“name”;

2.6 图片资源文件名:

(1)模块+功能命名法(公共使用:common+功能)

(2)单词全拼,或者大家公认无歧义的缩写(如:nav,bg,btn等)

个人中心模块中我的消息按钮示例:personal_btn_my_message

公共模块搜索按钮示例:common_icon_search(或者common_search_icon)

二、代码规范

1 删除多余的空行
     * 所有方法与方法之间空1行
     * 所有代码块之间空1行
2 删除多余的注释
     * 删除注释掉的代码

* 删除没有意义的注释
3 删除多余的方法
     * 如果方法没有使用到,请删除它
     * 如果方法没有执行任何业务逻辑,请删除它或者给出一定注释
4 删除未被使用的资源文件或者类(除非保留必要)
5 添加必要的注释
     * 所有 .h 文件中的property 需要给出清晰注释,非必要变量请勿防止 .h文件中
     * 所有自定义的方法需要给出注释
     * 比较大的代码块需要给出注释
     * 所有代码中出现的阿拉伯数字需要给出注释
     * 程序中出现加密/解密 逻辑的操作地方,需要给出注释说明过程(无论是系统还是自定义)

6 无用类、方法、代码块、打印、警告

* 无用类、方法、代码块务必删除

* 请不要存在警告(除非必要)

* 请将调试的打印函数非必要部分注释或者删除,避免大段打印,影响他人调试

7 整体代码风格需要统一
     * 代码后面的”{“ 不需要单独占用一行
     * 逻辑运算符 与 代码之前空一格
     * “#pragma mark -” 与下面的代码之前不要空行
     * 遵循一般性的代码规范

三、iOS通用规则

1 下面所有规则对第三方类库无约束
     * 所有类、方法、属性等命名,做到见名知意,采用驼峰式命名规则
     * 根据资源类型或者所属业务逻辑对项目资源进行分组,使得整个项目结构清晰明了
     * 整个项目保持一种代码书写风格(这个风格由无锡团队根据自己编码习惯来定),让你的代码变的优雅!
2. 命名规范
     * 所有类名称以项目工程开头命名,eg:“XP”、“ZJG”、“SZ”
     * 针对不同视图控制器,在末尾添加后缀,eg:
     * UIViewController  后缀添加“ViewController”
     * UIView 后缀添加“View”
     * UIButton 后缀添加“Button”、“Btn”
     * UILabel 后缀添加“Label"
3. 单页代码最好控制在800行以内,每个方法最好不要超过100行,过多建议对代码进行重构
4. 相同的逻辑方法定义避免在多个地方出现,尽量将公用的类、方法抽取出来
5. 删除未被使用的代码,不要大片注释未被使用的代码,确定代码不会使用,请及时删除
6. 对其他项目中copy过来的代码,根据具体需要更新代码风格,及时删除未被使用的代码
7. 项目中所有Group或者文件名称(图片名字等),不要使用汉字命名,尽量使用英文命名,国内特有名词可以使用拼音。
8. 项目中所有Group都需要在项目目录中存在一个真实的目录,Group中的文件与真实目录中文件一一对应。
9. 请在项目中写必要代码的注释
10. 请多使用 #pragma mark - Mark Name 对方法进行分组 eg:
     * #pragma mark - View lifeCycle
     * #pragma mark - View lifeTerm
     * #pragma mark - Init methods
     * #pragma mark - Action methods
     * #pragma mark - Common methods
     * #pragma mark - UIActionSheetDelegate
     * #pragma mark - UIImagePickerControllerDelegate
     * #pragma mark - UITableViewDelegate Methods
     * #pragma mark - UITableViewDataSource Methods
     * #pragma mark - UIScrollViewDelegate Methods
     * #pragma mark - UITextFieldDelegate Methods
     * #pragma mark - UITextViewDelegate Methods

ios开发之--编码及命名规范的更多相关文章

  1. ios开发Base64编码以及加密相关学习

    一:.Base64补充 ```objc 1.Base64简单说明 描述:Base64可以成为密码学的基石,非常重要. 特点:可以将任意的二进制数据进行Base64编码 结果:所有的数据都能被编码为并只 ...

  2. iOS切图文件的命名规范

    万能公式:

  3. [转载] iOS开发分辨率那点事

    1 iOS设备的分辨率 iOS设备,目前最主要的有3种(Apple TV等不在此讨论),按分辨率分为两类 iPhone/iPod Touch 普屏分辨率    320像素 x 480像素 Retina ...

  4. Android资源文件命名规范

    在复杂Android应用的开发中,资源文件的规范命名非常重要,能帮助设计人员和开发人员减小沟通成本.资源的名字尽量力求准确,可以适当长一些,但换回的价值是值得的. 关于WCC的Android开发,资源 ...

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

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

  6. Objective-C编码规范:26个方面解决iOS开发问题

    介绍 我们制定Objective-C编码规范的原因是我们能够在我们的书,教程和初学者工具包的代码保持优雅和一致.即使我们有很多不同的作者来完成不同的书籍. 这里编码规范有可能与你看到的其他Object ...

  7. [置顶] Objective-C ,ios,iphone开发基础:命名规范

    命名规范:http://bukkake.iteye.com/blog/695492  点击打开链接

  8. iOS-OC命名规范

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

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

    列出来的都是个人觉得在团队合作,代码阅读,代码维护中比较重要的一些点,没有什么空格 间距华而不实的东西在里面.涉及 命名规范.编码规范.代码管理规范 命名规范 项目名都遵循大驼峰命名.例如:MSMob ...

随机推荐

  1. Java设计模式(4)原型模式(Prototype模式)

    Prototype模式定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是: ...

  2. 深入浅出学习hibernate框架(三):java的反射机制

    上篇博客写到了JDBC的基本操作,今天准备写一篇关于JAVA反射机制的文章,因为java的反射机制和上一篇JDBC都是Hibernate框架的基本要素.在Hibernate的运行机制中,这两块的内容正 ...

  3. JSONP原理及jQuery中的使用

    JSONP原理   JSON和JSONP   JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在浏览器和服务器之间交换信息.   JSONP(JSON ...

  4. 关于Unity中的光照(五)

    Mobile Diffuse Unity自带的一种shader,用的比较多,性能还可以.我们默认创建的unit shader基本和它一致,但是没有参与光照计算,看起来和Mobile Diffuse有区 ...

  5. 使用Maven构建项目

    要构建一个基于Maven的项目,打开控制台,进入到 pom.xml 文件所放的项目文件夹,并发出以下命令: mvn package 这将执行Maven的“package”阶段. Maven构建生命周期 ...

  6. 一个类似于postman的协议测试工具

    协议测试工具使用postman相当便捷,不过有一个问题,就是每个人都要装一个这个东西,并且测试文件导来导去,还是觉得麻烦了点. 最重要的是postman不能修改,有一些定制功能postman明显力不从 ...

  7. C#中按模板操作Word —— 如何向Word中插入图片

    一.Word对象模型的重叠性分析 本文主要介绍通过书签Bookmark向Word文档中插入图片的方法.在此之前我们先简单讨论下Word对象模型的重叠性.如果你对Word对象模型还不熟悉,请参考本专栏第 ...

  8. 加密算法(对称加密)AES、DES (非对称加密)RSA、DSA

    目前主流的加密方式有:(对称加密)AES.DES        (非对称加密)RSA.DSA

  9. linux命令中的head命令

    head命令和tail命令就像他的名字一样浅显易懂,它是用来显示开头或者结尾某个数量的文字区块,head用来显示档案的开头至标准输出当中,而tail想当然就是查看档案的结尾. 命令格式 head  [ ...

  10. 同一个Tomcat部署两个project之间的通信问题

    同一个tomcat下的两个project是无法通信的. 同一个tomcat中的project能互相调用吗 启动一个tomcat部署多个项目,那么每个项目算是一个线程还是进程呢? Tomcat中的pro ...