版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Object-C 编码规范编码规范当前版本0.10密级机密机密文档编号总页数正文页数附录页数0北京陆优科技有限公司 java 编码规范第1页,共15页编制人王春评审人批准人编制日期2014.09.02评审日期批准日期 修改履历修改履历序序号号状状态态版本版本修改内容修改内容修改修改位置位置修改人修改人日期日期评审评审人人日期日期批准批准人人日期日期王春1C0.10创建 Object-C 编码规范文档初稿。2014.09.0223456北京陆优科技有限公司 java 编码规范第2页,共15页7891011121314状态:状态:C创建文档,A增加内容,M修改内容,D删除内容目录1 1引言引言.4
2、1.1目的.41.2适用范围 .41.3定义、首字母缩写词和缩略语.42 2编码规范编码规范.42.1文件.42.2注释.52.3编码排版格式 .72.4命名规范 .9北京陆优科技有限公司 java 编码规范第3页,共15页2.5修改规范 .132.5.1.新增代码行.132.5.2.删除代码行.132.5.3.修改代码行.13北京陆优科技有限公司 java 编码规范第4页,共15页1 1引言引言1.11.1 目的目的统一规范 XCode 编辑环境下 Objective-C 的编码风格,提高程序的可读性、可测试性和可维护性,同时提高项目整体效率和研发交付物质量。遵循编码规范有助于标准化程序结构
3、和编码风格,使源代码对于自己和别人都易读、易懂。良好的编码习惯除了代码格式,详细的注释外,还应该包括使用有助于提高代码效率的编码方式。1.21.2 适用范围适用范围此文档适用于所有 IOS 开发人员。1.31.3 定义、首字母缩写词和缩略语定义、首字母缩写词和缩略语 定义:术语定义 缩略语:名称命名名称命名2 2编码规范编码规范2.12.1 文件文件1.项目文件必须使用一个有意义的名字且前缀以 PRJ_。例如:XCcode 中下拉刷新的北京陆优科技有限公司 java 编码规范第5页,共15页项目文件被命名为PRJ_ PullDownRefresh.xcodeproj 。2.公共文件统一命名为P
4、ublic.h 。任何文件的命名尽量不要以中文命名。3.对于文件的目录要按如下结构创建: -Document(文档所在路径) -Help(帮助文件所在路径) -图片等资源文件放在单独的目录与组(Group)中,如 Images。 -所有的 view 放在单独的组(Group)中,如 Custom View。 -所有的 viewController 放在单独的组中,如 viewControllers。 -引用外部文件或者某个单独的功能时,放在单独的组中,例如:程序中使用了 coverflow 功能,引用 openflow 的文件时,将其全部文件放在openFlow 这个组中。其 view 和 v
5、iewcontroller 等文件的组织不受上面所规定的影响。2.22.2 注释注释1.注释可以采用 /* */ 和 / 两种注释符号,涉及到多行注释时,尽量使用 /* */ 。2.对于一行代码的注释可放在前一行及本行上,不允许放在下一行,更不允许在一行语句的中间加入注释。3.单元文件的文件头注释说明应按如下格式:/* Company:LuyouChina Co., Ltd.* CopyRight:2013-2014, LuyouChina Co., Ltd.* Author:白勇* CreateDate:2014-09-03* FileName::LYAppDelegate.h* Proje
6、ctName::铁道培训在线* Desc:*/北京陆优科技有限公司 java 编码规范第6页,共15页 4.方法前面的注释遵循以下格式:如果某项没有,则以 N/A 表示 例如:/* 函数名称:-(BOOL)showFiveAndSixStairRoomCountByStatu 函数描述:显示特定状态下五楼和六楼的房间数 输入参数:(NSString *)statu:某状态。 输出参数:(int *)roomCount :该状态房间数量。 返回值:BOOL:操作是否成功。 */- (void)ShowFiveAndSixStairRoomCountByStatu:(NSString *)stat
7、u roomCount:(int *)_roomCount;或/* 函数名称:-(NSUInteger)showFiveAndSixStairRoomCount 函数描述:显示五楼六楼的房间数。 输入参数:N/A 输出参数:N/A 返回值:NSUInteger :房间数量。*/- (NSUInteger)showFiveAndSixStairRoomCount5.不必每行都加注释,在 310 行左右的段落做注释要好于每行都做注释,显而易见的代码不加注释。例如:If (!returnValue) /调用登录过程失败 无用的注释 NSLog(”登录失败”);北京陆优科技有限公司 java 编码规范
8、第7页,共15页2.32.3 编码排版格式编码排版格式1.代码的缩进应使用空格(SPACE),不能使用制表符(TAB),并且缩进以2 个字符为单位。2.中括弧的每一个括弧在源程序中要单独占一行。 例如: /不正确用法 for (int i = 0; i 10 ; i+) /正确用法for (int i = 0; i b) /错误的写法,逻辑判断符号两端没有空格 if(a b) /正确的写法d. .h 中协议前面有一个空格。e. .h 中成员声明时,类型与变量之间有至少 1 个空格。*号靠近变量,不靠北京陆优科技有限公司 java 编码规范第8页,共15页近类型。f. property 后留 1
9、 个空格,()里面,逗号紧跟前一变量,与后一变量之间留 1 个空格。()外面,先留 1 个空格,再声明属性。g. 方法的+,-后面与()之间留 1 个空格。h. 返回类型与*之间留 1 个空格,方法参数中返回类型与*之间留 1 个空格。i.在多参数方法中,每个参数后面都有 1 个空格。4.每行只能有一个语句 例如 /不正确写法 NSUInteger objectIndex, stuffCount; 或 objectIndex = objectIndex + 10, stuffCount = stuffCount + 20; 或 synthesize MyView, MyLabelView; /
10、正确写法 NSUInteger objectIndex;NSUInteger stuffCount;或objectIndex = objectIndex + 10;stuffCount = stuffCount + 20;或synthesize MyView;synthesize MyLabelView;5.关于空行a. .h 中的空行 、文件说明与头文件包含(#import)之间空 1 行1 、头文件包含(#import)之间,如果需要分类区别,各类别之间空 1 行。2 、头文件包含(#import)与class 之间空 2 行。3 、interface 与class 之间空 1 行。4北京
11、陆优科技有限公司 java 编码规范第9页,共15页 、头文件里面,空 1 行开始声明对象成员,如果需要分类区别,各类5别之间空 1 行。 、头文件外,空 1 行书写属性,如果需要分类区别,各类别之间空 16行。 、属性下面空 1 行开始写方法,如果需要分类区别,各类别之间空 17行。 、方法完成后,空 1 行end。8 、如果需要声明 protocol,空 2 行接着写。通常 protocol 写在end 后9面,但是声明在interface 之前。b. .m 中的空行 、文件说明与头文件包含(#import)之间空 1 行1 、头文件包含(#import)之间,如果需要分类区别,各类别之间
12、空 1 行。2 、implementation 和synthesize 之间空 1 行, 如果需要分类区别,各3类别之间空 1 行。 、synthesize 与方法之间空 1 行。4 、方法与方法之间空 1 行。5c. 方法里面的空行 、变量声明后需要空 1 行,如果需要分类区别,各类别之间空 1 行。1 、条件、循环,选择语句,整个语句结束,需要空 1 行。2 、各功能快之间空 1 行。3 、最后一个括弧之前不空行。4 、注释与代码之间不空行。5 、#pragma mark 与方法之间空 1 行。6d. 每行代码最多不得操作 100 个字。设置如下:Xcode = Preferences =
13、 TextEditing = Page Guide at column /输入 100 即可。2.42.4 命名规范命名规范2.4.1.保留字保留字北京陆优科技有限公司 java 编码规范第10页,共15页Objective-c 语言的保留字或关键词应全部使用小写字母,除下表中保留字外,private、protected、public、在类型说明中也作为保留字使用。还有nonatomanic,retain,readwrite,readonly 等也有特殊的使用场合。_Bool_Complex_Imaginaryautobreakbycopybyrefcasecharconstcontinued
14、efaultdodoubleelseenumexternfloatforgotoifininlineinoutintlongonewayoutregisterrestrictreturnselfshortsignedsizeofstaticstructsuperswitchtypedefunionunsignedvoidvolatilewhile2.4.2.方法方法1.方法的名称应全部使用有意义的单词组成,且以小写字母开头,多单词组合时,后面的单词首字母大写。例如: -(void)getUserInformation2.设置类变量的内容的方法应使用 set 作为前缀,读取变量的内容的方法应使用
15、 get作为前缀。 例如: -(void)getUserName; -(void)setUserName:(NSString *)userName;3.方法中的参数:第一个参数名称要从函数名称上携带出来,第二个参数的首字母小写,多个单词组合时,后面单词首字母大写。参数有别名时,参数别名与参数名一致,但参数名前缀以_。参数别名与前一参数保留 1 个空格。参数无别名时,以有意义的字母命名。 例如:北京陆优科技有限公司 java 编码规范第11页,共15页 -(void)myFunctionWithSizeA:(CGSize)sizeA sizeB:(CGSize)_sizeB;2.4.3.变量变量
16、1.变量必须起有意义的名字,使其他组员可以很容易读懂变量所代表的意义,变量命名可以采用同义的英文命名,可使用几个英文单词,第一个单词首字母小写,其他单词首字母大写。 例如: NSString *username;2.对于一些特殊类型的变量,命名时要带上类型,如 NSArray 的变量命名为xxxArray,其他的如 xxxDictionary,xxxSize 等。这样就可以从名称上知道是什么类型的变量。千万不能将 NSArray 的变量命名为 xxxDictionary。3.对于要和 interface builder 关联的的输出口变量,命名时要后缀以特定的控件名。例如: IBOutlet
17、UILabel *userNameLabel;4.对于使用 c 语言形式声明的变量,一些特定类型可采用一定的简写: 例如: 指针类型:P 结构体类型:Rec 数组类型:Arr Core Graphic:CG 等。 循环控制变量通常使用单一的字符如:i、j、k 等。使用有意义的名字,如objectIndex 也是可以的。5.尽量避免使用全局变量,如果必须使用全局变量则必须加前缀 Pub_,同时应在变量名称中体现变量的类型。6.私有实例变量前加一个下划线,如_myPrivateVarible。7.枚举变量也要有相应的前缀来区分不同的 enum 变量。比如苹果公司的一个enum。例如:typedef
18、 enum CGPathDrawingMode CGPathDrawingMode;北京陆优科技有限公司 java 编码规范第12页,共15页/* Drawing modes for text. */ enum CGTextDrawingMode kCGTextFill, kCGTextStroke, kCGTextFillStroke, kCGTextInvisible, kCGTextFillClip, kCGTextStrokeClip, kCGTextFillStrokeClip, kCGTextClip;2.4.4.常量常量1.避免在程序中直接出现常数,使用超过一次的应以宏定义的形式来替代。2.常数的宏定义应与它实际使用时的类型相一致。如以 3.0 来定义浮点类型,用 3 表示整型。3.常量的命名应当能够表达出它的用途,并且用大写字母表示。 例如: #define PI 3.14159264.一些常量前加特殊前缀,可以作为不同常量的区分, 例如: UserDefaultsKey 的变量前加 UDKEY_, Notification
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川安和精密电子电器股份有限公司招聘工程设备维修技术员助工等岗位8人笔试模拟试题及答案解析
- 教育医疗费用离婚协议书
- 2026山东青岛红蝶新材料有限公司招聘21人考试参考题库及答案解析
- 2026龙门农商银行社会招聘4人笔试参考题库及答案解析
- 改性合成树脂装置操作工安全风险测试考核试卷含答案
- 2026山东菏泽外国语学校招聘20人考试备考题库及答案解析
- 2026年福建省晋江市东石中学秋季教师招聘意向摸底笔试备考试题及答案解析
- 铸造碳化钨制管工岗前创新方法考核试卷含答案
- 2026年乌鲁木齐市第126中学教育集团招聘考试模拟试题及答案解析
- 人力采伐工岗前内部考核试卷含答案
- 物料降本规划方案
- Python经济大数据分析 课件 第7章 Python应用航空公司客户价值分析
- 云南德福环保有限公司2000t-a含油硅藻土处理和综合利用工程 环评报告
- 【实用资料】马克思主义基本原理绪论PPT
- 安全检查流程图
- GB/T 1921-2004工业蒸汽锅炉参数系列
- 基于web计算机应用竞赛管理系统论文
- 静电防护安全知识精选优秀课件
- 2023年河南信息统计职业学院单招职业适应性测试笔试题库及答案解析
- 工程质量的检查与验收方案
- 2022基本公共卫生知识考试题库及答案
评论
0/150
提交评论