Amazon

ラベル Objective-C コーディングルール の投稿を表示しています。 すべての投稿を表示
ラベル Objective-C コーディングルール の投稿を表示しています。 すべての投稿を表示

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



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

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


下記リンクにある"Objective-C 2.0"は詳解と書いてあるとおり、
iPhoneアプリケーション開発が初めてのプログラミングという方でもわかりやすいように詳しく解説されています。
これまで既存のコードをコピペして何となく動くアプリケーションを作ってきたけど基礎がよく分からない
Javaはある程度書けるけどObjective-Cは初めて
もう一度プログラミングをきちんと学び直したい
という方にはお薦めです。




残念ながらiPhoneアプリの使えるコードが書いてあるわけではないので、とりあえず動くモノが作りたい!という方には向いてないです。リファレンスとして手元に置いておく本ですね。

さてこの本で紹介されていたコーディングルールがよくまとまっていたので何回かに分けて紹介します。



○綴りのルール
  • 複数の単語を組み合わせて名前を作る場合2つ目の単語からは先頭文字を大文字にする
  • 単語の間にハイフンや下線は使用しない
○メソッド名
  • 接頭語は付けない
  • 先頭の文字は小文字
    • 例:strings anElement stringByExpandingTildeInPath
  • レシーバのオブジェクトに何かの動作をさせるためのメソッドは動詞を使用
  • レシーバに何かの値を問い合わせる場合、その値を表す名前をメソッド名とする
  • getがメソッド名に付いている場合は、ポインタの指す場所に値がコピーされて戻させることを意味する
    • 例:NSDateメソッド
    • bytes:データのバイト列の先頭ポインタを返す
    • getBytes:引数のポインタが指すメモリ領域にデータをコピー
  • レシーバに何かの真偽値を問い合わせる場合、is-か真の場合に相当する状態を記述
    • 例:isEqualToDate, fileExistsAtPath
  • 引数が複数ある場合、全ての引数にキーワードを対応させる
    • 例:setValue:forKey:
  • 継承などによってあるメソッドの機能を特化したメソッドを作成する場合、新しいキーワードを末尾に付け足す
    • *メソッドが2つの別々の動作をする場合、その2つをandで結ぶ
○関数名

  • 接頭語を付ける
  • 接頭語の直後の文字は大文字
  • その関数の働きを示す動詞か関数の返り値を表す名詞
    • 例:NSData CFString NSRunAlertPanel
○接頭語
  • フレームワークには接頭語を付ける
  • 大文字で短く
    • 例:Core Foundations -> CF, Interface Builder -> IB
    • * アンダースコアで始まる名前は使用不可。Appleがインスタンス変数やプライベートメソッド名として予約済み
次回へ続く

Amazon3