3

すべてのインスタンス変数をプライベートメソッドに、アクセサー/ミューテーターをパブリックメソッドに入れたい。大規模なクラスを構築するときに知っておくべき命名規則、他の開発者の間で読みやすくするための規則、およびメソッド名が他のクラスと衝突するのを防ぐための規則があるかどうか疑問に思います。

[myInstance setSupportsMusicians:YES]たとえば、クラスが「ミュージシャンをサポートする」と呼ばれる「品質」(必ずしも特定の変数である必要はありません)にアクセスして変更する場合、他のすべてのミューテーターとアクセサーのメソッド名プレフィックスとして[myInstance returnSupportsMusicians]、を使用setして、受け入れ可能な名前になりますか?return

もちろん、好きな名前を付けることができますが、命名規則が組織化された開発の重要な要素であることを知っているので、意見を聞きたいと思いました。

4

2 に答える 2

4

@propertyこのようなことを宣言するために使用するのが最善です。myInstance.supportsMusicians = YESそうすれば、基になるメソッド名をまったく気にすることなく、便利なドット構文 (例: ) とともに、すべての実装上の利点 (アトミニシティ、ivar の自動生成など) を得ることができます。

ただし、メソッドを手動で宣言したい場合、または自動生成されたメソッドが何であるかを知りたい場合、命名規則は次のとおりです。

- (void)setSupportsMusicians:(BOOL)supportsMusicians;
- (BOOL)supportsMusicians;

一部のタイプのブール値プロパティには、読みやすさのために「is」が接頭辞として使用される副次的なケースもあります。

- (BOOL)isVisible;

ただし、これは普遍的に守られているわけではなく、従来の規則と見なされる場合があります。

プレフィックスとしての「get」は、特定の意味があるため、ランダムに使用しないでください。呼び出し元が入力するバッファーを提供するコンテキストで使用されます-[NSString getBytes:length:]

于 2012-11-22T07:33:02.820 に答える
2

set と get は Java と他のいくつかの言語スタイルです。

しかし、ココアスタイルは次のとおりです(名前の疑似コード):

ココアの setName() は setName:

ココアの getName() は名前です:

編集: これは命名規則のためだけのものであり、メソッドの構文と見なさないでください。

いくつかの役立つリンク :

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/CodingGuidelines.html

http://cocoadevcentral.com/articles/000082.php

于 2012-11-22T06:11:19.447 に答える