Amazon

2011年7月2日土曜日

Objective-C 2.0のコーディングルール (2)

前回に引き続きObjective-C 2.0のコーディングルールをメモしておきます。
参照元となっているのは以下の本。リファレンスとして手元に置いておきたい本です。



○名前に使う単語
  • 単語を省略するのは避ける。但し一般的に省略されるものはそのまま使う
    • alloc Allocat    init Initialize    alt Alternate    max Maximum
    • app Application    min Minimum    calc Calculate    msg Message
    • dealloc Deallocate    rect Rectangle    func Function    temp Temporary
    • info Information
  • 同じ意味の単語がいくつか考えられる場合はCocoa APIで使われている単語を使用する
  • 配列などに含まれる要素の個数は○count ×number
  • 前置詞の使い方
    • 初期化時にパラメータ指定with
    • 位置を表すat
    • 書き込み先を示すto
  • 返り値が複数の場合は名詞を複数形
    • 例:lastPathComponent, pathComponents
○クラス名とプロトコル名
  • クラス名は関数名と同様にし、クラスの内容を名詞句で表現
  • プロトコル名はクラス名と混同しやすいので「-ing」にする
    • 例:クラス名NSLock, プロトコル名:NSLocking

○カテゴリを含むファイル名
  • クラス名+カテゴリ名.m
    • 例:NSString+Utils.m

○アクセサオブジェクトの属性を参照、設定するメソッドをアクセサメソッドと呼ぶ。
  • 属性名が名詞
    • 参照:- (NSColor *)color;
    • 設定:- (void)setColor:(NSColor *)aColor;
  • 属性名が形容詞
    • 参照:- (BOOL)isEditable;
    • 設定:- (void)setEditable:(BOOL)flag;
  • 属性名が真偽を表す動詞句
    • 参照:- (BOOL)showsHelp;
    • 設定:- (void)setShowsHelp:(BOOL)showsHelp;
  • キー値コーディングで用いるアクセサ(プロパティ名はnameとする)
    • 参照:- (elementType)name;
    • 設定:- (void)setName:(elementType)newName;
○オブジェクトの集合に対する操作
  • 要素となっているオブジェクトを含む配列を返すメソッドはオブジェクトの種類を複数形
    • 例:- (NSArray *)elements;
○引数の名前
  • 引数名    小文字から始めるて不定冠詞+オブジェクト名
    • 例:anObject, aSelector
  • BOOL型    "flag"が一般的
○インスタンス変数名
  • 先頭に下線"_"を付けてはいけない
○型名、定数名、文字列定数名
  • 条件付きコンパイルのために#ifとともに使うマクロ    全て大文字(例:NS_BLOCK_ASSERTION)
  • 例外名        末尾にError
  • 通知名        「関連するクラス名」「WillまたはDid」「動詞原型+文字列」Notification
  • 列挙型の定数    列挙型の型名を反映した長い名前
  • 辞書のキー    文字列名の末尾にKey
  • ビット和マスク    定数の末尾にMask
○デリゲートのメソッド名と通知名
  • デリゲートが実装するメソッド    デリゲートに対してメッセージを委譲するオブジェクのクラス名を先頭につける。但し接頭語はなしで、小文字から開始
    • 例:- (BOOL)splitView:(NSSplitView *)sender canCollapseSubview:(NSView *)subview;
  • デリゲートに対する通知メッセージ    接頭語と末尾のNotificationを付けない
    • 例:NSWindowDidExposeNotificationがポストされたときに送られるメッセージ名はwindowDidExpose
  • 「~してもよいか」問い合わせるメッセージ    should+動詞原型
    • 例:windowsShouldClose:
○アプリケーション識別名、エラードメイン名
  • Javaのパッケージ名と同様にドメイン名を逆順に並べる
    • 例:com.company.application



0 件のコメント:

コメントを投稿

Amazon3