クライアント開発仕様-iOS
4190 ワード
1サンプルコード
ヘッダファイル(.h)の例:
//クラスの前置き宣言は、ベースクラスの宣言を参照する以外に、ヘッダファイルに他のヘッダファイルを参照してはいけません.//ヘッダファイルで使用される他のタイプは、前置き宣言を使用します.//@classDFMicroApplicationDescriptor; @classDFViewController;/***クラスに対するコメントです.ドキュメント生成ツールで対応するドキュメントを生成するには、*外部で使用されているクラスにこの形式のコメントを使用する必要があります.*/@interface DFMicroApplication:NSObject/**属性に対するコメント*/@property(nonatomic,strong)DFMicroApplicationDescriptor*descriptor;/***1つのメソッドに対するコメント.**@param targetControlのパラメータの説明.*@param parentControlパラメータの説明.***@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の後ろにスペースが1つしかありません.次のようになります.
@interface ClassName;
üクラス継承関係のセミコロンの前後にそれぞれスペースがあります.次のようになります.
@interface ClassName : SuperClass
@end
üキーワード(if,whileなど)の後には、スペースが1つしかありません.次のようになります.
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プロパティはstrongまたはretainではなくcopyとして宣言する必要があります.
8 import framework
sdkを使用してframeworkを持参する場合は、単一のファイルではなくframewrok全体を直接importします.
9リソース管理
モジュールに従って異なるbundleに配置します.
画像はImageOptimなどのツールを使用してサイズを最適化し、スペースを節約することができます.
10その他の開発プロセスでは、「Enable Zombie Objects」が開きます.
参照先:http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml
ヘッダファイル(.h)の例:
//クラスの前置き宣言は、ベースクラスの宣言を参照する以外に、ヘッダファイルに他のヘッダファイルを参照してはいけません.//ヘッダファイルで使用される他のタイプは、前置き宣言を使用します.//@classDFMicroApplicationDescriptor; @classDFViewController;/***クラスに対するコメントです.ドキュメント生成ツールで対応するドキュメントを生成するには、*外部で使用されているクラスにこの形式のコメントを使用する必要があります.*/@interface DFMicroApplication:NSObject/**属性に対するコメント*/@property(nonatomic,strong)DFMicroApplicationDescriptor*descriptor;/***1つのメソッドに対するコメント.**@param targetControlのパラメータの説明.*@param parentControlパラメータの説明.***@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の後ろにスペースが1つしかありません.次のようになります.
@interface ClassName;
üクラス継承関係のセミコロンの前後にそれぞれスペースがあります.次のようになります.
@interface ClassName : SuperClass
@end
üキーワード(if,whileなど)の後には、スペースが1つしかありません.次のようになります.
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プロパティはstrongまたはretainではなくcopyとして宣言する必要があります.
8 import framework
sdkを使用してframeworkを持参する場合は、単一のファイルではなくframewrok全体を直接importします.
#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