iOS编码规范(简版)

 1. 总体指导原则

【规则1-1】首先是为人编写程序,其次才是计算机。

说明:这是软件开发的基本要点,软件的生命周期贯穿产品的开发、测试、生产、用户使用、版本升级和后期维护等长期过程,只有易读、易维护的软件代码才具有生命力,所以提倡写代码之前多思考,特别是逻辑复杂或者技术难点较高的地方,个人思考不清楚的,可以和团队成员进行沟通。

【规则1-2】保持代码的简明清晰,避免过分的编程技巧。

说明:简单是最美。保持代码的简单化是软件工程化的基本要求。不要过分追求技巧,否则会降低程序的可读性。

【规则1-3】编程时首先达到正确性,其次考虑效率。

说明:编程首先考虑的是满足正确性、健壮性、可维护性、可移植性等质量因素,最后才考虑程序的效率和资源占用。

【规则1-4】编写代码时要考虑到代码的可测试性。

说明:不可以测试的代码是无法保障质量的,开发人员要牢记这一点来设计、编码。实现设计功能的同时,要提供可以测试、验证的方法。

【规则1-5】函数(方法)是为一特定功能而编写,不是万能工具箱。

说明:方法是一个处理单元,是有特定功能的,所以应该很好地规划方法,不能是所有东西都放在一个方法里实现,也不能把所有东西都放在一个类里面实现(比如说VC)

【规则1-6】鼓励多加注释

【规则1-7】建议少用XIB,特别是XIB中的约束

2.控制器规范

【规则2-1】不需要对外提供的方法和属性,不得在头文件(.h)中进行定义。

【规则2-2】头文件中对外提供的API,建议以方法参数的方式,不建议采用属性的方式。

说明:这是因为采用属性的方式,如果该控制器调用地方较多,每个地方的参数不一样,会造成调用方属性赋值的困惑。

【规则2-3】不建议在控制器中直接调用网络请求(GofNet)和进行数据处理。

【规则2-4】控制器一般承载较多的逻辑处理,因此对控制器的文件结构做如下规范:

  • 头文件
文件头

#import (依次为标准库头文件、非标准库头文件)

宏定义

全局数据类型

类定义
  •  实现文件
文件头

#import (依次为标准库头文件、非标准库头文件) 

文件内部使用的宏

文件内部使用的数据类型

全局变量

本地变量(即静态全局变量)

类的实现

#pragma mark - LifeCycle

#pragma mark - Private Method

#pragma mark -- UI

#pragma mark -- 数据加载和解析

#pragma mark - Event

#pragma mark - Delegate

#pragma mark -- UITableViewDataSource

#pragma mark -- UITableViewDelegate

#pragma mark - Getter/Setter
【规则2-5】空行。【规则2-4】中的每一项内容之间空一行,方法之间空一行,重要的代码段之间空一行。

3.命名规范

【规则3-1】所有文件命名需要添加前缀。
【规则3-2】业务模块建议自定义一个前缀,比如家庭医生,可以加前缀GofFamilyDoctor。
【规则3-3】命名遵循驼峰法命名规则。

说明:

  1. 小驼峰法:除第一个单词之外,其他单词首字母大写;
  2. 大驼峰法:把第一个单词的首字母也大写。
【规则3-4】类命名遵循大驼峰法规则:前缀+描述+类型

说明:以家庭医生服务页为例,前缀为GofFamilyDoctor,描述为Service,类型为ViewController,那么该类命名为GofFamilyDoctorServiceViewController。

关于类型,主要有如下几类:

描述
类型
控制器 ViewController
表格行 Cell
视图 View
模型 Model
数据请求 DataHelper
【规则3-5】属性命名遵循小驼峰法规则:描述+类型简写

说明:比如定义一个姓名的标签,描述为name,类型为Label,命名为nameLabel。

关于类型缩写,主要有如下两大类:

一、Foundation类型

Foundation类型

缩写
NSString String
Integer/int Int
BOOL/Boolean Bool
char Char
NSArray Array
NSDictionary Dic
NSDate Date
NSObject Obj

 二、UIKit类型

UIKit类型
简写
UIKit类型
简写
UILabel Label UIButton Btn
UITextView TextView UITextField TextField
UITableView TableView UIImageVIew ImageView
UIWebView WebView UIScrollView ScrollView
UIViewController VC UITableViewCell Cell
【规则3-6】方法命名遵循小驼峰法规则,建议遵守如下相关细则:
  1. 方法的名称应全部使用有意义的单词组成,读起来像一句完整的话,能让人从名字就能知道方法的作用;
  2. set方法前需要添加set,get方法前不需要添加get;
  3. 常用的方法命名应该使用约定的动词,如initWith、insert、remove、replace等;
  4. init方法应该遵循Apple命名规则,返回类型使用 instancetype而不是id;
  5. 方法签名中,应该在方法类型(-/+ 符号)之后有一个空格。在方法各个段之间应该也有一个空格。
【规则3-7】枚举类型的类型和枚举值命名推荐使用如下格式:
typedef NS_OPTIONS(NSInteger, MASAttribute) {

    MASAttributeLeft = 1 << NSLayoutAttributeLeft,

    MASAttributeRight = 1 << NSLayoutAttributeRight

};
【规则3-8】图片命名采用规则:模块+功能+类型

说明:

  1. 模块可分为公用模块和私有模块,可自定义模块的缩写,比如说公用模块的导航栏,可以定义缩写为nav;
  2. 功能根据具体的用途划分,比如说返回按钮,功能可定位为back;
  3. 类型主要有几类:如背景(bg),按钮(btn)等。

综上所述,如果是导航栏的返回按钮,可命名为nav_back_btn@2x.png。

4.注释

【规则4-1】注释建议统一使用VVDocument插件。

【规则4-2】每个头文件必须添加注释,用于对该类的功能做说明。

【规则4-3】头文件中定义的属性和方法,必须添加注释

说明:属性的注释建议在属性后使用“//<!”添加。

【规则4-4】实现文件中定义的变量、属性和自定义方法,必须添加注释

【规则4-5】实现文件中系统方法或系统代理,不强制添加注释。

【规则4-6】实现文件方法中,对功能段代码添加注释,比如说一个视图的定义和属性设置,那么可以作为一个功能段添加注释。

【规则4-7】枚举类型、宏定义、结构体等建议添加注释。

posted @ 2016-12-28 16:51  LeeGof  阅读(366)  评论(0编辑  收藏  举报