iOS 代码规范

iOS代码规范

一、     命名规范

命名必须明确易懂,使用英文单词或其组合,不能使用中文拼音,不能在名字中间使用下划线,资源文件名除外。

1.     变量

1)第一个单词首字母小写,其他单词首字母大写。如:

NSString  *companyName;

2)使用系统的常用类作为变量声明时,以类名为后缀。如:

NSArray *groupArray;

NSLabel *nameLabel;

3)类中的成员变量以下划线“_”开头。属性命名,与去掉“_”前缀的成员变量相同,使用@synthesize将二者联系起来。

2.     常量

1)#define常量字母全部大写,单词之间以下划线分隔,如:

#define BUTTON_WIDTH 100;

2)enum常量单词首字母都大写,如:

typedef enum {

    TranspondTypeUnknown = 0,

    TranspondTypeBroadcast = 1,

    TranspondTypeGameCenter = 2,

    TranspondTypeTopic = 3,

    TranspondTypeOther = 4,

}TranspondType;

3.     类

1)单词首字母均大写,文件和类同名;

2)使用系统的常用类作为变量声明时,以类名为后缀。如:

   HomepageViewController;

   GroupHeaderView;

3)协议(委托)命名与类命名相同,此外需添加“Delegate”后缀。如:

   UITableViewDelegate;

4)分类(类别)命名与类命名相同,此外需添加要扩展的类名和“+”。如:

   NSString+URLEncoding;

4.     方法

方法名和方法参数名首字母小写,其他单词首字母大写。如:

- (void)showCustomNavigationBarWithTitle:(NSString*)title

                                   leftButton:(UIButton*)leftButton

                                    rightButton:(UIButton *)rightButton;

5.     资源文件

以功能模块名为前缀,以下划线连接文件描述。

 

二、     书写规范

1.     代码缩进以4个字符为单位。

2.     中括弧的两个括弧不能写在同一行。

正确的做法:

for (int i = 0; i < 10; i++)

{

}

不推荐的做法:

       for (int i = 0; i < 10  i++){

}

for (int i = 0; i < 10  i++){}

3.     空格的使用

1)关键字与其后的表达式之间要有空格。如:if (expr)。

2)单目操作符不应与它们的操作数分开,如“!”和“^”等。 

3)除“, ”外,其它双目操作符应与它们的操作数用空格隔开。

   正确的做法:

   i = i + 1; 

   if (a > b)

   错误的做法:

   i=i+1; 

   if(a>b)

4).h文件中协议<>前面有一个空格。

5).h文件中成员声明时,类型与变量之间有至少1个空格;

“*”号靠近变量,不靠近类型。

6)声明属性时,@property后留1个空格;

     ()里面,逗号紧跟前一变量,与后一变量之间留1个空格;

     ()外面,先留1个空格,再声明属性。 

7)方法的“+”,“-”后面与()之间留1个空格。

8)返回类型与“*”之间留1个空格;

   方法参数中返回类型与“*”之间留1个空格;

   在多参数方法中,每个参数后面都有1个空格。

   当参数过长时,每个参数占用一行,以冒号对齐。如:

   - (void)doSomethingWith:(GTMFoo *)theFoo

                    rect:(NSRect)theRect

                 interval:(float)theInterval 

   {

   }

   如果方法名比参数名短,每个参数占用一行,缩进4个字符并垂直对齐。
   如:

   - (void)short:(GTMFoo *)theFoo

       longKeyword:(NSRect)theRect

       evenLongerKeyword:(float)theInterval

   {

   }

       方法调用时也遵循以上规范。

4.     每行只能有一个语句。

正确的做法:

NSUInteger  objectIndex; 

NSUInteger  stuffCount; 

错误的做法:

NSUInteger objectIndex, stuffCount;

5.     空行的使用

1).h文件中的空行

   文件说明与头文件包含(#import)之间空1行。

   头文件包含(#import)之间,如需分类区别,各类别之间空1行。

   头文件包含(#import)与@class之间空2行。

   @interface与@class之间空1行。

   头文件{}里面,空1行开始声明成员变量,如需分类区别,各类别之间空1行。

   头文件{}外,空1行开始写属性,如需分类区别,各类别之间空1行。

   属性下面空1行开始写方法,如需分类区别,各类别之间空1行。 

   方法完成后,空1行@end。

   如果需要声明protocol,空2行接着写,通常protocol写在@end后面,

但是声明在@interface之前。 

2).m文件中的空行 

   文件说明与头文件包含(#import)之间空1行。

   头文件包含(#import)之间,如果需要分类区别,各类别之间空1行。

   @implementation和@synthesize之间空1行, 如果需要分类区别,各类别之间空1行。

   @synthesize与方法之间空1行。

   方法与方法之间空1行。

3)方法里面的空行 

   变量声明后需要空1行,如需分类区别,各类别之间空1行。

   条件、循环和选择语句结束后空1行。

   各代码块之间空1行。

   最后一个括弧之前不空行。

   注释与代码之间不空行。

   #pragma mark 与方法之间空1行,#pragma mark前空2行。

6.     在switch语句中,每一个case分支和default要用{ }括起来,{ }中的内容需要缩进。

 

三、     注释规范

1.     注释可以采用“/* */ ”和“// ”两种注释符号,多行注释时尽量使用前者。

2.     单行代码的注释可放在前一行或本行上,不允许放在下一行,更不允许在一行语句的中间加入注释。 且“//”与文字之间要加空格。

3.     文件的注释要遵循如下格式:

   //

   //  文件名

   //  工程名

   //

   //  创建日期

   //  版权声明

   //

4.     方法的注释要遵循如下格式:

/*

功能描述:xxx

输入参数:xxx

        返回值:xxx

   */

 

四、     编程惯例

1.     引入其它类时,若要作为实例变量的在.h文件中引入,否则在.m文件中引入。

2.     声明实例变量一律以属性声明。

其它类要访问的实例变量和方法在.h文件中声明,否则声明于.m文件中。

3.     功能模块以#pragma mark –分隔。

4.     版本release时,去除NSlog,在.pch文件使用如下代码:

#ifndef __OPTIMIZE__

#define NSLog(...) NSLog(__VA_ARGS__)

#else

#define NSLog(...) {}

#endif

5.     每个方法尽量不要多于100行,每个文件尽量不多于1000行。

6.     最好不要在语句块内声明局部变量。

7.     不要编写太复杂的复合表达式。

8.     在switch语句中,每一个case分支必须使用break结尾,最后一个分支必须是default分支。

9.     不可在for 循环体内修改循环变量,防止for 循环失去控制。

10.  循环嵌套层数不大于2层。

11.  addObject/setObject之前要进行非空判断。

12.  释放子view前,先把子view中的delegate置为nil,防止野指针。

13. iOS 代码规范_第1张图片 iOS 代码规范_第2张图片

你可能感兴趣的:(知识学习)