最近、私は自分自身のために新しい小さなプロジェクトを開始し、命名規則に関する文献を読んでいました。どのコーディング スタイルが優先されるかに関係なく、Google コーディング スタイル またはハンガリー語表記法(私の意見では、アプリ スタイルではなくシステム ハンガリー語スタイル (誰かがそれが良いスタイルではないと考えている場合でも)) または言及されていない他のスタイルです。命名規則を使用するか、名前空間で作成するかについて考えました。また、この投稿を読みました。
私の注意は継承にあります。
グーグルのような例:
class MyClassInterface {
int some_stuff() = 0;
};
class MyClassA : MyClassInterface {
int some_stuff() { return 1; }
};
class MyClassB : MyClassInterface {
int some_stuff() { return 2; }
};
今、私の考えは、名前空間を使用することでした:
namespace my {
namespace interface {
class Class {
int some_stuff() = 0;
};
} // namespace interface
namespace a {
class Class : interface::Class {
int some_stuff() { return 1; }
};
} // namespace a
namespace b {
class Class : interface::Class {
int some_stuff() { return 2; }
};
} // namespace b
} // namespace my
この種の命名の利点は、次の例で見ることができます。
using namepsace my;
void foo(interface::Class lala) {
// do something;
}
// ...
int main() {
using namespace a;
Class bar;
foo(bar);
b::Class bar2;
foo(bar2);
}
これで ausing namespace
と入力できるようになり、常に優先されるクラスが使用されますが、他のすべての子クラスには、そこの名前空間から引き続き到達できます。
だから私の質問は、これは良い考えですか、それとも私が見ていないいくつかの欠点がありますか?
編集:
私も使うことができました
namespace my {
namespace interface {
class Class {
int some_stuff() = 0;
};
} // namespace interface
class ClassA : interface::Class {
int some_stuff() { return 1; }
};
class ClassB : interface::Class {
int some_stuff() { return 2; }
};
} // namespace my
多くの名前空間にネストしないようにします。
補遺
StackOverflow が質問を入れるのに適切な場所であるかどうかはわかりませんが、プログラマーには、タグの命名規則さえありません (ただし、命名基準)。また、名前空間と命名規則についてはあまり議論されていません。それが間違っている場合は、質問を移動できます。