Upload
tomohiko-okita
View
328
Download
0
Embed Size (px)
DESCRIPTION
過去の遺産
Citation preview
CodingGuideLine for Cocoaを(なんとなく)読んでみた
沖田@tmokita
12年11月17日土曜日
参考• 原文
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日土曜日
C/C++の命名規則例• メンバ変数に「m」や「_」
• global変数に「g」
• static変数に「s」
• static関数に「_」
• Boolを返すのは「is~」「can~」
• 動詞で始まる
• アクセサは「set~」「get~」
• クラス名は「C~」
• ポインタは「p」
12年11月17日土曜日
前まとめ• 8割位「あぁそうですか」「まぁそうだよね」
• 1割くらい「あぁ、そういうことでしたか」
• 1割くらいすいません、よくわかりませんでした(For Framework Developer とかそのへん)
12年11月17日土曜日
以上
12年11月17日土曜日
だとあんまりなので
12年11月17日土曜日
Code Naming Basics
12年11月17日土曜日
General Principal
• Clarity曖昧にしないではっきりと
• Consistency一貫性をもって
• No Self Reference余計な説明はいらない
12年11月17日土曜日
Prefix
• 2~3文字で
• クラス、プロトコル、関数、定数、typedef、につける
• ClasssMethod, InstanceMethodにはいらない
12年11月17日土曜日
Typographic Conventions
• キャメルケースで
• 関連するPrefixをつける
12年11月17日土曜日
Class and Protocol Names
• 目的が明らかな名前をつける
• プロトコルは「動名詞」(~ing)をつかう
12年11月17日土曜日
Header Files
• ごちゃまぜにしない
• 関連クラスやプロトコルはまとめる
• Frameworkは同名の.hを含める
• 拡張する場合は元の名前に追加する
• 関連するデータ型はまとめておく
12年11月17日土曜日
Naming Methods
12年11月17日土曜日
General Rules• キャメルケースで
• 余計なことは書かない
• 引数の宣言をちゃんと書く
• 引数の前に引数の説明がくるように
• 拡張する場合は元の引数の後ろに追加
• 「and」はつかわない
• if the method describe two separate actions , use “and” to link them.
12年11月17日土曜日
Accessor Methods• setter
-(void)setColor:(NSColor*)aColor;
• getter-(NSColor*)color;-(BOOL)is~~~
• 動詞を形容詞的につかわない
• is,can,should,をつかうdo,doesをつかわない
• 複数の要素をReferenceで返すときだけ”get”をつかう
12年11月17日土曜日
Delegate Methods• メッセージを送っているモノの名前からはじめる
• 引数がヒトツの場合はsenderが基本
• 処理の結果を返す場合も引数がヒトツ(の場合もある)
• 「did」「will」で通知する
• 確認的なものは「should」
12年11月17日土曜日
Collection Methods
• 順番ものはNSArrayをバラバラものはNSSetを返す
• insertでretain, removeでrelease
12年11月17日土曜日
Method Arguments
• 小文字で始まるキャメルケース
• ポインタでもptrとか使わない
• 1,2文字の短すぎるのも使わない
• あまり省略しすぎない
12年11月17日土曜日
Private Methods
• _ を頭につけないで
• わかりやすくしたいなら会社名とかプロジェクト名とかつける
• 不注意にオーバーライドしないように気をつけてね
12年11月17日土曜日
Naming Functions
12年11月17日土曜日
• 他の規則+α
• Prefixをつけるよ
• Prefixの後は大文字だよ
• 動詞ではじめるよ
• 最初の引数のPropertyを返すときは動詞は省略するよ
• Referenceで戻り値を受け取るときはGetだよ
• Bool返すときは、Isとか
12年11月17日土曜日
Naming Instance Variables and Data
12年11月17日土曜日
Instance Variables
• publicなinstance変数はつくらない
• @private @public @protected をちゃんとつける
• わかりやすい名前をつける
12年11月17日土曜日
Constants• 整数で関連するグループ→ enum
• 浮動小数点→ const
• その他→ define
• コンパイラは__を使ってるから注意
• 辞書のキーとかには定数がオススメ
12年11月17日土曜日
Exceptions and Notifications
• Exception[Prefix] + [UniquePartOfName] + Exception例外よりもエラーコードが多いよ
• Notification[Name of associated class] + [Did | Will] + [UniquePartOfName] + Notification
12年11月17日土曜日
Acceptable Abbreviations and
AcronymsP.25 参照
12年11月17日土曜日
Tips and Techniques for Framework Developers
12年11月17日土曜日
Initialization• Class Initializationごめんなさいこれもよくわかりません
• Designated Initializers基底クラスのinitを呼ぶイニシャライザを作ろうね
• Error Detection During Initializationちゃんとエラー返そうね
12年11月17日土曜日
Versioning and Compatibility
• Framework Versionドキュメントをちゃんと作ろうバージョンを取得できる方法を
• Keyed Archivingごめんなさい言ってる意味がよくわかりません
• 互換性を保ちたかったらオブジェクトのサイズにもきをつけてね
12年11月17日土曜日
Exception and Errors
• 例外処理は強制じゃないよ
• っつか例外はテストで潰しておいて
12年11月17日土曜日
Framework Data
• Constant Dataなるべく定数を使って小さくしようね
• Bitfieldsunsignedを使った方がいいよエンディアンとか気をつけてね
• Memory Allocation(フレームワークでは)できるだけスタック使うのがいいんじゃない?
12年11月17日土曜日
Language Issues• nilにメッセージを送ってもOK nilが返る
• 必要な場合は isEqualを使う(作る)
• プロトコルを後から返るのは大変だから慎重に
• new, alloc, copy 以外はauoreleaseだよ
• autoreease使わない方がパフォーマンスが良い場合もあるよ
• autorelease回避のためにNSDictionaryやNSArrayをつかうのもありだよ
12年11月17日土曜日
後まとめ
• キャメルケース
• 無駄な事は省きつつ
• 言いたいことははっきりと
12年11月17日土曜日
• ご利用は計画的に
12年11月17日土曜日
• ありがとうございました
12年11月17日土曜日