Objective-CとCの使用
私はよくプレフィックスを使用します:
typedef enum MyClass_Error {
// never use MyClass_Error_Undefined
// or you may favor MyClass_Error_None for a valid error code
MyClass_Error_Undefined = 0,
MyClass_Error_Empty = 1,
MyClass_Error_NoConnection = 2,
MyClass_Error_WrongUser = 4
// ...
} MyClass_Error;
これらの値のコレクション。switch
次に、型安全性や値のチェックなどの利点が得られます。
非型定数の場合:
enum { MyClass_ConstantName = 4 };
*.m
プライベートのときは、これらを自由に非表示にしてください。
enum
また、Cは(Javaとは異なり)定義された値にギャップがある場合があることにも注意してください。
更新: Abizernの回答に示されているように、列挙型を宣言するさらに良い方法があります-最新のツールチェーンを使用している場合。この拡張機能を使用する大きな理由は、バイナリ互換性とエンコーディングのためです(ただし、これらの目的には固定幅タイプを使用します)。
既存のタイプを使用する場合のために、他にもいくつかのバリエーションがあります。
プライベート定数
MyClass.m
static const NSRange MyClass_InputRange = {1,1};
パブリックコンスタント
MyClass.h
extern const NSRange MyClass_InputRange;
MyClass.m
const NSRange MyClass_InputRange = {1,1};
C++の使用
プレフィックスを使用してスコープをシミュレートするのではなく、クラスまたは名前空間のいずれかに、これらの値に新しいスコープを導入することをお勧めします。
よくある間違い
- for定数の使用
#define
(前処理時に定義が必須でない場合)
- 短い識別子、および接頭辞が付いていない識別子の使用
static
ヘッダーでの値の使用
const
可能な場合は使用しない
- それらがソースにある可能性がある場合は、ヘッダーでそれらを宣言します
*.m
。