良いコード習慣を身につける
5358 ワード
美化コードはtabを使用せずにスペースのみを使用し、2つのスペースを一度にインデントします.xcodeは自動的にタブをスペースに置き換えるように設定し、2スペース にインデントする必要があります.メソッドのカッコと他のカッコ(if/else/switch/whileなど)は常に同じ行で開始し、新しい行で を終了する.できるだけあなたのコードを80列以内に維持し、Xcode>Preferences>Text Editing>Show page guideを設定することで、境界を越えて発見されやすくなります. if文は省略しない{} メソッド名とメソッドタイプ(-/+記号)の間には、 のスペース間隔を置く必要があります.@publicおよび@privateアクセス修飾子は、スペースでインデントする必要があります. メソッドの呼び出しは、すべてのパラメータの1行、または各パラメータの1行、およびコロンが保証され、最初のキーワードが他のものより短い場合、次の行に少なくとも4つのスペースのインデント が保証される.
ベストプラクティスユーダ式 は使用しないでください. YES,NO,Nilの値と比較しないでください ifネストを過度に使用するにすぎず、returnでifネスト を減らすことができる場合がある.複雑な式は、複数の意味がより明確な文 を分割すべきである.三元演算子?コードをより明確にするために使用されるべき場所 注意stong,weak,copy,assignの正しい使用 cの使用をできるだけ避ける基本タイプ、例えば: は、特定のパラメータの条件が満たされていない場合、 が投げ出されるかを断言するパラメータ断言を合理的に使用する.ファクトリメソッドまたはクラスコンストラクタメソッドでは、戻りタイプはidタイプではなくinstancetypeを使用する必要があり、メソッドでは[[xxx class]alloc]init]メソッドを使用してオブジェクトを構築する必要があり、[[XXClass alloc]init] を使用しないは、 に直接アクセスする必要があります.類の構成方法(init方法)はDesignated Secondaryの原則を遵守する必要がある.これはswiftにおいてinitとconvenienceの構造方法が強制的に規定されている. あなたのdesignated initializerを定義し、直接スーパークラスのdesignated initializerが呼び出されていることを確認します. 直接スーパークラスのdesignated initializerを再ロードします.新しいdesignated initializerを呼び出します. 新しいdesignated initializerのドキュメントを作成します. designated initializerからsecondary initializer を呼び出さない初期化モードの合理的な使用(クラスタ、単例) に注意怠惰負荷Lazy loading を合理的に使用クラスの等価性を書き換えるにはisEqualとhashメソッド を同時に実現する必要がある.定数は静的定数の宣言を推奨し、外部に露出する場合はexternキーワードを使用します.たとえば、 自分のNSNotificationを定義するときは、通知の名前を文字列定数 として定義する必要があります. objcでは、コードブロックの特性を合理的に使用することができ、局所変数をより明確にすることができる . Pragma Mark区分の合理的な使用:異なる機能グループの方法、protocolsの実現、親メソッドの書き換え、Viewのライフサイクル、カスタムアクセサ、 メソッド注釈は/**で始まることが好ましく、改行後の最初の文の書き方の一言で記述し、空白の行の後に残りの記述を書く場合は、引用符ではなく|を使用して注釈の変数名および記号名を参照することもでき、例えば .関数定義のblockパラメータはできるだけ最後のパラメータに置くべきで、提供する必要があるデータとエラー情報を個別のblockに統合し、それぞれ成功と失敗を提供するblockよりも 良い.関数定義のerrorパラメータは、可能な限り方法関数の最後の関数であり、データが空である場合、errorはnilではなく、errorは空ではなく、データが空である必要があります. block合理的使用self,weakself,strongSelf block 1行でブロックを書き終えることができる場合は、改行する必要はありません.ブロック内のコードは4スペースでインデントする必要があります.果物のブロックは長すぎます.例えば、20行を超える場合は、ローカル変数として定義してから、この変数を使用することをお勧めします. newメソッドを使用してオブジェクトを作成しない ネーミング仕様
メソッドの名前: and接続パラメータを使用しないでください.最初のパラメータはwithを使用することができます.動詞があればforを使用することができます.依頼用did、willは状態 を表します.メソッドがオブジェクトに動作を実行させることを示す場合、動詞ヘッダを使用して と命名する. categoryメソッドの前に、自分の小文字の接頭辞と下線を付けます.たとえば-(id)zoc_myCategoryMethod メソッドの定義は、1行に非常に多くのパラメータがある場合、より良い方法は、各パラメータを個別に1行に分解することです.複数行を使用する場合は、各パラメータの前のコロンを揃え、最初のキーワードが他のものより短い場合は、次の行に少なくとも4つのスペースのインデント が保証されます.
クラス、プロトコルの名前付けクラス名は3つの大文字を接頭辞(二文字接頭辞はAppleのクラス予約)、頭文字 であるべきである.メソッド名頭文字小文字 変数名頭文字小文字、プライベート変数名は「」接尾辞としては、例えば .定数ネーミングは、アルファベット'k'を接頭辞として使用することができる サブクラスネーミングは、例示的な部分を接頭辞と親クラス名の中間に置くべきであり、例えば である.
ツールバーのプロパティは、略語を避け、アルファベットの先頭にあるアルパカの名前をできるだけ記述的に命名する必要があります.*記号は、 などの名前に近づきます.属性は可能な限り使用する.シンボルコール 属性定義配列順序:原子性、読み書き性、メモリ管理、例えば プライベート属性は、インプリメンテーションファイルに定義される.
ベストプラクティス
// jidi , ,
if ([@8 isEqual:a]) //
if ([a isEqual:@8]) //
if (great == YES) //
if (great) //
- (void)someMethod {
if (![someOther boolValue]) {
return;
}
//Do something important
}
int -> NSInteger
unsigned -> NSUInteger
float -> CGFloat
-> NSTimeInterval
enum -> NS_ENUM
NSParameterAssert()
を使用して条件が成立するか、または異常init dealloc
の方法でgetter、setterを使用しないでください.プロパティなどは、インスタンス変数designated , , secondary , designated
, , getter
extern NSString *const ZOCCacheControllerDidClearCacheNotification;
static NSString * const ZOCCacheControllerDidClearCacheNotification = @"ZOCCacheControllerDidClearCacheNotification";
// Foo.h
extern NSString * const ZOCFooDidBecomeBarNotification
// Foo.m
NSString * const ZOCFooDidBecomeBarNotification = @"ZOCFooDidBecomeBarNotification";
// ,
NSURL *url = ({
NSString *urlString = [NSString stringWithFormat:@"%@/%@", baseURLString, endpoint];
[NSURL URLWithString:urlString];
});
// Sometimes we need |count| to be less than zero.
- (void)downloadObjectsAtPath:(NSString *)path
completion:(void(^)(NSArray *objects, NSError *error))completion;
: block self, block self weakSelf, strongSelf
メソッドの名前:
クラス、プロトコルの名前付け
myInstanceVariable_
ZOCNetworkClient => ZOCTwitterNetworkClient
ツールバーの
NSString *text
@property (nonatomic, readwrite, copy) NSString *name;
##
- [objc ](https://github.com/oa414/objc-zen-book-cn/)
- [Google - objc](http://zh-google-styleguide.readthedocs.org/en/latest/google-objc-styleguide/contents/)