IOS编码安全系统要求规范.docx
《IOS编码安全系统要求规范.docx》由会员分享,可在线阅读,更多相关《IOS编码安全系统要求规范.docx(8页珍藏版)》请在冰豆网上搜索。
IOS编码安全系统要求规范
移动端-IOS编码安全规
一、命名
1、Bundleid命名:
规则:
采用反域名命名规则,全部使用小写字母。
一级包名为com,二级包名根据应用进行命名。
2、类命名:
1)类命采取驼峰命名规则,即首字母必须大写,如果为词组,则每个单词的首字母必须大写,类名只能使用名词或名词词组,力求类名简单,不允许出现冗余的单词。
2)继承自UIView的类以View结尾。
3)继承自ViewController的类以ViewController结尾。
4)保存数据的实体以Model结尾。
3、方法的命名:
规则:
方法名第一个单词是一个动词,其首字母小写,其后的所有单词首字母大写。
如:
publicVoidthreadRun()
1)类中常用方法命名:
●类的获取方法
如果返回值为单个值,一般在头部加上单词“get”。
如果返回值是数组或列表,要在头部加单词“find”
如:
publicStringgetUserName()、publiclistfindFriends()
●类的设置方法
在被访问字段名的前面加上前缀set
如:
publicvoidsetName(Stringname)
●类的布尔型判断方法
一般要求方法名使用单词is或has做前缀
如:
isNetWorkConnected()
●构造方法应该用递增的方式写。
参数个数少的在前
4、变量命名
规则:
第一个单词首字母必须小写,往后的单词需要符合驼峰命名规则,即第一个字母大写。
变量名尽可能的使用名词或名词词组。
同样要求简单易懂,不允许出现无意义的单词。
如:
StringuserName
避免使用全局变量,如果用到必须加前缀‘Pub_’,同时需要在变量名体现其类型。
5、成员变量命名
与变量命名一样,在private字段前加上字母“m”。
6、控件变量命名
规则:
一般的变量命名后加上控件名称
IBOutletUILabel*userNameLabel;
7、常量命名:
规则:
必须全部大写,单词间用下划线隔开。
如:
MAP_KEY
8、异常命名:
规则:
自定义异常首字母大写,以Exception为结尾。
如:
AppException
9、资源命名:
项目中所使用的所有资源命名必须以全部单词小写,单词间以下划线分割,加前缀区分。
名称
功能
btn_xx_normal
按钮正常情况下的效果
btn_xx_press
按钮点击下的效果
bg_head
背景图片使用bg_功能_说明
def_search_cell
默认图片使用def_功能_说明
icon_more_help
图标图片使用icon_功能_说明
Seg_list_line
具有分割特征的图片使用seg_功能_说明
Sel_ok
选择图标使用sel_功能_说明
二、注释
1、头文件注释:
所有的源文件都应该在开头有一个注释,其中列出头文件的相关描述、作者、以及对应的版本信息。
/*!
header头文件名称
abstract关于这个源代码文件的一些基本描述
author作者
version1.002012/01/20Creation(此文档的版本信息:
版本号+创建时间)
*/
2、类注释
每一个类都要包含如下格式的注释,以说明当前类的功能等。
/*!
class类名
abstract这里可以写关于这个类的一些描述。
*/
3、枚举注释
每一个枚举都需要包含相对应的enum描述,以及每个枚举值对应的含义。
/*!
enum枚举名称
abstract关于这个enum的一些基本信息
constant各个对应值得含义,如:
OKButton对应的是OK按钮的Tag
*/
4、协议注释
协议需要注明是哪个类对应的protocol,以及自身的相关描述。
/*!
protocol协议名称
abstract这是哪个类的protocol
discussion具体描述信息
*/
5、方法注释
包括当前方法的用途,当前方法参数的含义,当前方法返回值的容和对应的错误参照。
/*!
method方法名
abstract该方法的一些简要描述
discussion该方法的具体使用方式,需要注意的地方,如果你是设计一个抽象类或者一个共通类给给其他类继承的话,在这里需要具体描述一下怎样使用这个方法。
paramtext参数列表
paramerror错误参照
result返回结果
*/
6、属性注释
/*!
property属性名称
abstract该Property的一些基本描述。
*/
7、类别注释
/*!
category类别名称
abstract哪个类的类别
*/
三、代码风格
1、缩进
规则:
禁止使用tab进行缩进,缩进为4个空格
2、.h文件空行
可以使用空行的情况:
Ø文件说明与头文件包含(#import)之间类声明跟接口声明之间。
Ø头文件包含(#import)与class之间
Øinterface与class之间
Ø头文件{},空1行开始写成员对象。
Ø头文件{}外,空1行开始写属性。
Ø属性与方法之间。
Ø方法与end之间。
Ø如果需要声明protocol,空2行接着写。
通常protocol写在end后面,但是声明在interface之前。
Ø方法与方法之间空1行。
3、.m文件空行
Ø文件说明与头文件包含(#import)之间。
Ø头文件包含(#import)之间。
Øimplementation和synthesize之间。
Øsynthesize与方法之间。
Ø变量声明后需要空1行。
Ø各功能块之间。
Ø#pragmamark与方法之间。
4、空格
Ø关键字与其后的表达式之间需要加空格。
Ø单目操作符不应与操作数分开。
Ø除’,’外,其它双目操作符应与它们的操作数用空格隔开。
Ø.h中协议<>前面有一个空格。
Ø.h中成员声明时,类型与变量之间有至少1个空格。
*号靠近变量,不靠近类型。
Øproperty后留1个空格,()里面,逗号紧跟前一变量,与后一变量之间留1个空格。
()外面,先留1个空格,再声明属性。
Ø方法的+,-后面与()。
Ø返回类型与*之间留1个空格,方法参数中返回类型与*之间留1个空格
Ø在多参数方法中,每个参数后面都有1个空格。
ØSwitch..case语句,代码块需要留4个空格。
ØIf语句嵌套,部if语句需要留4个空格。
5、Import
Import语句引入的次序如下:
ØIOSimports
Ø第三方库
Ø自定义.h文件
在每组部按字母排序,大写字母排在小写字母的前面。
每个大组之间应该空一行。
6、Log
规则:
统一使用自定的log服务,不直接使用系统自带。
7、语句
每行只能有一个语句
每行代码最多不得操作100个字符。
8、标准大括号风格
大括号不单独占用一行;它们紧接着上一行书写。
9、控制语句
1)If语句
判断中如果有常量,则应将常量放在判断式的右侧,如if(a>b)
如果if语句成立的逻辑只有一句,则应该将其放在if同一行或用{}括起来。
如:
if(index>0)……
if(index>0){
……….
}
2)While语句
循环语句中不允许出现表达式。
如while(I四、修改规
1.新增代码行
新增代码行的前后应有注释行说明。
//修改人,修改时间,修改说明
新增代码行
//修改结束
2.删除代码行
删除代码向的前后用注释行说明
//修改人,修改时间,修改说明
要删除的代码行(将要删除的语句进行注释)
//修改结束
3.修改代码行
修改代码行以注释旧代码行后再新增代码行的方式进行。
//修改人,修改时间,修改说明
//修改前代码行开始
//修改前代码行
//修改前代码行结束
//修改后代码行开始
修改后代码行
//修改结束
五、严禁出现的情况
1、永远不要有空的catch语句。
替代方案:
向方法的调用者抛出异常、或者抽象级别抛出新异常。
2、避免在一条语句中给多个变量赋相同的值
3、不要将赋值运算符用在与相等运算符混淆的地方
4、重复代码,复制-粘贴
5、长方法,将所有逻辑处理放在一个方法里面,每个方法都应有其自己的意图
6、大类,妄想将所有模块放在一个类中实现。
7、小类,一个类所承担的责任太少,应该将其消除,类的维护需要额外的开销
附件: