名前空間を使用する前例のない、クールで、秘教的な方法に興味があります。多くの上級開発者は、たとえば文字列定数への参照として名前空間を使用することにより、名前空間を「ハッキング」していることを知っています。文字列定数の例では、DRY(DRY = Do Not Repeat Yourself)を実装することを目的としており、すべての文字列を1つのファイルに保持できます。
注:C#、Ruby、Javaなどの「一般的な」言語に関連する回答を探しています。
名前空間を使用する前例のない、クールで、秘教的な方法に興味があります。多くの上級開発者は、たとえば文字列定数への参照として名前空間を使用することにより、名前空間を「ハッキング」していることを知っています。文字列定数の例では、DRY(DRY = Do Not Repeat Yourself)を実装することを目的としており、すべての文字列を1つのファイルに保持できます。
注:C#、Ruby、Javaなどの「一般的な」言語に関連する回答を探しています。
私がよく頼る難解な使い方の 1 つは、C++ で列挙型を定義するときです。特に、特定のコンテキストに複数の型がある場合です。これにより、Quality::k_high
およびImportance::k_high
関連するコンテキストでの使用が可能になります。また、列挙型はしばしば不明な値を示します (通常、何も設定されていない場合を表すため)。これは、名前空間を使用して回避される定数 (たとえば、k_qualityNone
および) を明確にするために修飾する必要があります。k_importanceNone
したがって、定義は次のようになります。
名前空間の品質 { 列挙型{k_high、k_medium、k_low、k_none}; }
と
名前空間の重要性 { 列挙型{k_high、k_medium、k_low、k_none}; }
Quality::Type
関数とメソッドは(and )型の引数を取りますImportance::Type
。これはかなり説明的で便利です。前述のように、個々の列挙定数も同様に修飾されます ( Quality::k_low
)。