35
CodingGuideLine for Cocoa を(なんとなく)読んでみた 沖田@tmokita 121117日土曜日

第3回yidev coding guideline読み

Embed Size (px)

DESCRIPTION

過去の遺産

Citation preview

Page 1: 第3回yidev coding guideline読み

CodingGuideLine for Cocoaを(なんとなく)読んでみた

沖田@tmokita

12年11月17日土曜日

Page 2: 第3回yidev coding guideline読み

参考• 原文

http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html(またはCodingGuidelines.pdf)

• 日本語訳を公開してくれているサイトhttp://park15.wakwak.com/~concordia/cocoa_break/http://potting.syuriken.jp/

12年11月17日土曜日

Page 3: 第3回yidev coding guideline読み

C/C++の命名規則例• メンバ変数に「m」や「_」

• global変数に「g」

• static変数に「s」

• static関数に「_」

• Boolを返すのは「is~」「can~」

• 動詞で始まる

• アクセサは「set~」「get~」

• クラス名は「C~」

• ポインタは「p」

12年11月17日土曜日

Page 4: 第3回yidev coding guideline読み

前まとめ• 8割位「あぁそうですか」「まぁそうだよね」

• 1割くらい「あぁ、そういうことでしたか」

• 1割くらいすいません、よくわかりませんでした(For Framework Developer とかそのへん)

12年11月17日土曜日

Page 5: 第3回yidev coding guideline読み

以上

12年11月17日土曜日

Page 6: 第3回yidev coding guideline読み

だとあんまりなので

12年11月17日土曜日

Page 7: 第3回yidev coding guideline読み

Code Naming Basics

12年11月17日土曜日

Page 8: 第3回yidev coding guideline読み

General Principal

• Clarity曖昧にしないではっきりと

• Consistency一貫性をもって

• No Self Reference余計な説明はいらない

12年11月17日土曜日

Page 9: 第3回yidev coding guideline読み

Prefix

• 2~3文字で

• クラス、プロトコル、関数、定数、typedef、につける

• ClasssMethod, InstanceMethodにはいらない

12年11月17日土曜日

Page 10: 第3回yidev coding guideline読み

Typographic Conventions

• キャメルケースで

• 関連するPrefixをつける

12年11月17日土曜日

Page 11: 第3回yidev coding guideline読み

Class and Protocol Names

• 目的が明らかな名前をつける

• プロトコルは「動名詞」(~ing)をつかう

12年11月17日土曜日

Page 12: 第3回yidev coding guideline読み

Header Files

• ごちゃまぜにしない

• 関連クラスやプロトコルはまとめる

• Frameworkは同名の.hを含める

• 拡張する場合は元の名前に追加する

• 関連するデータ型はまとめておく

12年11月17日土曜日

Page 13: 第3回yidev coding guideline読み

Naming Methods

12年11月17日土曜日

Page 14: 第3回yidev coding guideline読み

General Rules• キャメルケースで

• 余計なことは書かない

• 引数の宣言をちゃんと書く

• 引数の前に引数の説明がくるように

• 拡張する場合は元の引数の後ろに追加

• 「and」はつかわない

• if the method describe two separate actions , use “and” to link them.

12年11月17日土曜日

Page 15: 第3回yidev coding guideline読み

Accessor Methods• setter

-(void)setColor:(NSColor*)aColor;

• getter-(NSColor*)color;-(BOOL)is~~~

• 動詞を形容詞的につかわない

• is,can,should,をつかうdo,doesをつかわない

• 複数の要素をReferenceで返すときだけ”get”をつかう

12年11月17日土曜日

Page 16: 第3回yidev coding guideline読み

Delegate Methods• メッセージを送っているモノの名前からはじめる

• 引数がヒトツの場合はsenderが基本

• 処理の結果を返す場合も引数がヒトツ(の場合もある)

• 「did」「will」で通知する

• 確認的なものは「should」

12年11月17日土曜日

Page 17: 第3回yidev coding guideline読み

Collection Methods

• 順番ものはNSArrayをバラバラものはNSSetを返す

• insertでretain, removeでrelease

12年11月17日土曜日

Page 18: 第3回yidev coding guideline読み

Method Arguments

• 小文字で始まるキャメルケース

• ポインタでもptrとか使わない

• 1,2文字の短すぎるのも使わない

• あまり省略しすぎない

12年11月17日土曜日

Page 19: 第3回yidev coding guideline読み

Private Methods

• _ を頭につけないで

• わかりやすくしたいなら会社名とかプロジェクト名とかつける

• 不注意にオーバーライドしないように気をつけてね

12年11月17日土曜日

Page 20: 第3回yidev coding guideline読み

Naming Functions

12年11月17日土曜日

Page 21: 第3回yidev coding guideline読み

• 他の規則+α

• Prefixをつけるよ

• Prefixの後は大文字だよ

• 動詞ではじめるよ

• 最初の引数のPropertyを返すときは動詞は省略するよ

• Referenceで戻り値を受け取るときはGetだよ

• Bool返すときは、Isとか

12年11月17日土曜日

Page 22: 第3回yidev coding guideline読み

Naming Instance Variables and Data

12年11月17日土曜日

Page 23: 第3回yidev coding guideline読み

Instance Variables

• publicなinstance変数はつくらない

• @private @public @protected をちゃんとつける

• わかりやすい名前をつける

12年11月17日土曜日

Page 24: 第3回yidev coding guideline読み

Constants• 整数で関連するグループ→ enum

• 浮動小数点→ const

• その他→ define

• コンパイラは__を使ってるから注意

• 辞書のキーとかには定数がオススメ

12年11月17日土曜日

Page 25: 第3回yidev coding guideline読み

Exceptions and Notifications

• Exception[Prefix] + [UniquePartOfName] + Exception例外よりもエラーコードが多いよ

• Notification[Name of associated class] + [Did | Will] + [UniquePartOfName] + Notification

12年11月17日土曜日

Page 26: 第3回yidev coding guideline読み

Acceptable Abbreviations and

AcronymsP.25 参照

12年11月17日土曜日

Page 27: 第3回yidev coding guideline読み

Tips and Techniques for Framework Developers

12年11月17日土曜日

Page 28: 第3回yidev coding guideline読み

Initialization• Class Initializationごめんなさいこれもよくわかりません

• Designated Initializers基底クラスのinitを呼ぶイニシャライザを作ろうね

• Error Detection During Initializationちゃんとエラー返そうね

12年11月17日土曜日

Page 29: 第3回yidev coding guideline読み

Versioning and Compatibility

• Framework Versionドキュメントをちゃんと作ろうバージョンを取得できる方法を

• Keyed Archivingごめんなさい言ってる意味がよくわかりません

• 互換性を保ちたかったらオブジェクトのサイズにもきをつけてね

12年11月17日土曜日

Page 30: 第3回yidev coding guideline読み

Exception and Errors

• 例外処理は強制じゃないよ

• っつか例外はテストで潰しておいて

12年11月17日土曜日

Page 31: 第3回yidev coding guideline読み

Framework Data

• Constant Dataなるべく定数を使って小さくしようね

• Bitfieldsunsignedを使った方がいいよエンディアンとか気をつけてね

• Memory Allocation(フレームワークでは)できるだけスタック使うのがいいんじゃない?

12年11月17日土曜日

Page 32: 第3回yidev coding guideline読み

Language Issues• nilにメッセージを送ってもOK nilが返る

• 必要な場合は isEqualを使う(作る)

• プロトコルを後から返るのは大変だから慎重に

• new, alloc, copy 以外はauoreleaseだよ

• autoreease使わない方がパフォーマンスが良い場合もあるよ

• autorelease回避のためにNSDictionaryやNSArrayをつかうのもありだよ

12年11月17日土曜日

Page 33: 第3回yidev coding guideline読み

後まとめ

• キャメルケース

• 無駄な事は省きつつ

• 言いたいことははっきりと

12年11月17日土曜日

Page 34: 第3回yidev coding guideline読み

• ご利用は計画的に

12年11月17日土曜日

Page 35: 第3回yidev coding guideline読み

• ありがとうございました

12年11月17日土曜日