客户端开发规范-iOS


1   示例代

头文件(.h)示例:

 

// 类的前置声明,除了引用基类的声明外,不得在头文件中引用任何其它的头文件。

// 在头文件中使用到的其它类型,均使用前置声明。

//

@classDFMicroApplicationDescriptor;

@classDFViewController;

 

/**

 * 此处是对类的注释。 为了文档生成工具能生成相应的文档,

   * 需要提供给外部使用的类必须使用这种格式的注释。

 */

@interface DFMicroApplication :NSObject

 

/**

 * 对属性的注释

 */

@property(nonatomic,strong)DFMicroApplicationDescriptor *descriptor;

 

/**

 * 对一个方法的注释。

 *

 * @param targetController 对参数的说明。

 * @param parentController 对参数的说明。

 *  

 * @return  对返回值的说明

 */

- (BOOL)startController:(UIViewController *)targetController animated:(BOOL)animated;

 

@end

实现文件(.m)示例:

#import "DFMicroApplication.h"

#import "DFMicroApplicationManager.h"

 

// 私有属性,不需要对外暴露的属性必须声明在实现文件中。

//

@interfaceDFMicroApplication ()

 

@property(nonatomic,strong)NSMutableArray *runningControllers;

 

@end

 

@implementation DFMicroApplication

 

// 对函数实现的说明。

//

+ (DFMicroApplication *)currentApplication

{

             return [[DFContextsharedContext].applicationManagercurrentApplication];

}

 

 

@end

 

2   空格

ü  缩进必须使用制表符,不能使用空格缩进 。

 

ü  指针星号(*)紧靠变量,与类型之前中空格。如:

         - (DFMicroApplication*)currentApplication

 

ü  在-/+号与类型之间使用空格,如:

         - (DFMicroApplication*)currentApplication

 

ü  属性的各个参数中,在逗号后使用空格,属性类型前后加空格。如:

         @property(nonatomic, assign) NSIntegervalue;

 

ü  关键字@interface,@implementation,@class后有且仅有一个空格。如:

         @interface ClassName;

 

ü  类继承关系中的分号前后各有一个空格。如:

         @interface ClassName : SuperClass

         @end

 

ü  关键字(if, while 等)之后,有且只有一个空格。如:

         self = [super init];

         if (self) {

         }

 

3   换行与空行

 

ü  导入头文件区域、类或协议声明、属性声明区域和方法声明区域必须使用空行区分。如:

         #import "Foo.h"

         #import "Bar.h"

 

         @interface ClassName

 

         @property(nonatomic, strong) NSDate*date;

         @property(nonatomic, assign) NSIntegervalue;

 

         - (void)method1;

         - (void)method2;

 

         @end

 

ü  函数体的花括号要换行,其它情况不换行。如:

         - (void)init

         {

                   self = [super init];

                   if (self) {

                            // ...

                   }

                   return self;

         }

 

4   注释

 

ü  需要提供给外部调用的类、方法和属性的注释,必须以 /** 开始,以 */ 结束 。如:

         /**

          * 概要说明。

          *

          * 详细说明(可选)。

          *

          * @param name 参数说明。

          *

          * @return 返回值说明。

          */

         - (id)initWithFrame:(CGRect)frame

         {

         }

 

ü  内部实现的注释,全部使用"//"。如:

         //

         // 概要说明。

         //

              - (id)initWithFrame:(CGRect)frame

 

5   命名规范

 

       参考官方文档

 

ü  取值函数,如果以参数形式返回结果,方法名前加get,否则不得使用get。如:

       // 结果以返回值形式返回。

         //

         - (NSString *)name;

             

              // 结果以参数形式返回。

         //

         - (void)getName:(NSString **)name;

 

ü  类名、协义名常量中要带模块前辍,防止命名冲突。常量以"k"开头,如:

       DFMicroApplication

       kDFMicroApplicationDidStart

 

6   异常处理

尽量避免抛异常,只是在使用第三方库或系统方法调用时考虑处理异常。

7   属性声明

atomic vs nonatomic
出于性能考虑,尽量声明为nonatomic;
NSString属性应声明为copy,而不是strong或retain。

8  import framework 

使用sdk自带framework时,直接import整个framewrok,而不是单个文件。

#import <Foundation/Foundation.h>     // good
#import <Foundation/NSArray.h>        // avoid
#import <Foundation/NSString.h>

9   资源管理

按照模块放到不同的bundle中;
图片可使用如ImageOptim等工具优化大小,节省空间;

10   其他

开发过程中,"Enable Zombie Objects" 打开;

参考: http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml
 

你可能感兴趣的:(客户端开发规范-iOS)