web-dev-qa-db-ja.com

ObjectiveCでのプロトコルの命名

Objective-Cの命名プロトコルに苦労しています。例えば:

Commandというプロトコルがあります。具体的なコマンドの基本クラスであるコマンドを実装する抽象クラスがあります。

プロトコルと基本クラスの「コマンド」の両方を呼び出すことは可能だと思いますが、これは混乱を招き、実装でプロトコルを参照する必要がある場合はインポートの衝突が発生します。また、Objective Cでは、プロトコルを示すためにプレフィックスを使用することは悪い形式であることも理解しています。いくつかの例では、最後に「ing」を追加して使用していますが、この場合は意味がありません。抽象クラス「CommandBase」の呼び出しも間違っているようです。

では、どのように名前を付ける必要がありますか?

27
Undistraction

あなたの場合、あなたのクラスはプロトコルの主要な表現であるため(NSObjectなど)、プロトコルと基本クラスに同じ名前を付けることは必ずしも悪いことではないことをお勧めします。

Appleの Cocoaのコーディングガイドライン:コード命名の基本

一部のプロトコルは、(いくつかの個別の小さなプロトコルを作成するのではなく)いくつかの無関係なメソッドをグループ化します。これらのプロトコルは、プロトコルの主要な表現であるクラスに関連付けられる傾向があります。このような場合、慣例では、プロトコルにクラスと同じ名前を付けます。この種のプロトコルの例は、NSObjectプロトコルです。このプロトコルは、クラス階層内のオブジェクトの位置についてクエリを実行したり、特定のメソッドを呼び出したり、参照カウントをインクリメントまたはデクリメントしたりするために使用できるメソッドをグループ化します。 NSObjectクラスはこれらのメソッドの主要な式を提供するため、プロトコルはクラスにちなんで名付けられます。

24
Stuart

すべて、セクション コード命名の基本 のAppleのCocoaのコーディングガイドラインで説明されています。

著者は次のように述べています。

プロトコルは、動作をグループ化する方法に従って名前を付ける必要があります。

ほとんどのプロトコルは、特にどのクラスにも関連付けられていない関連メソッドをグループ化します。このタイプのプロトコルは、プロトコルがクラスと混同されないように名前を付ける必要があります。一般的な規則は、動名詞(“ ... ing”)形式を使用することです。

NSLocking-良い。

NSLock-悪い(クラスの名前のようです)。

一部のプロトコルは、(いくつかの個別の小さなプロトコルを作成するのではなく)いくつかの無関係なメソッドをグループ化します。これらのプロトコルは、プロトコルの主要な表現であるクラスに関連付けられる傾向があります。このような場合、慣例では、プロトコルにクラスと同じ名前を付けます。

この種のプロトコルの例は、NSObjectプロトコルです。このプロトコルは、クラス階層内のオブジェクトの位置についてクエリを実行したり、特定のメソッドを呼び出したり、参照カウントをインクリメントまたはデクリメントしたりするために使用できるメソッドをグループ化します。 NSObjectクラスはこれらのメソッドの主要な式を提供するため、プロトコルはクラスにちなんで名付けられます。

17
Max MacLeod