継承ツリーの一番下にあるクラス名に「Base」という単語を使用することは許容されますか?
私はいつも、これはちょっと言い訳だと思っていたので、誰かが私に同意するかどうか気になっています。
たとえば、MyClassA と MyClassB の特定の要素を共通の基本クラスにリファクタリングする場合、2 つのクラスが継承する MyBaseClass を作成したいと思うでしょう。
しかし、MyBaseClass をリファクタリングする必要がある場合はどうなるでしょうか? MyBaseBaseClass ですか? これはまったくばかげています。
Rocky Lhotka が CSLA フレームワークを気にしていないことは知っていますが、私はプログラミングにおける「明確な」表現について常に不安を感じています。
ご意見は?
明確にさせてくださいなぜ私もこれについて心配しています。
MySpecificNamespace と MyCommonNamespace という 2 つの名前空間があります。予想どおり、MyNamespace は MyCommonNamespace を使用します。
さて、私は可能な限り名前空間を最大限に活用して問題のコンテキストを記述し、コンテキストをクラス名に追加しないようにしています。たとえば、MyCommonNamespace のクラスから派生した MyNamespace のクラスがあるとします。
オプションA
私できたこれを呼ぶ
MySpecificClass: MyClass
{
}
しかし、名前に「Specific」(コンテキスト)を追加していますが、これはすでに MySpecificNamespace にあるため冗長です。
オプションB
MyClass: MyCommonNamespace.MyClass
{
}
ここで私たちが混乱する可能性があるのはお分かりですよね?
オプションC
怪しいと思うのは次のものです:
MyClass: MyBaseClass
{
}
ベストアンサー1
私は、基本クラスの名前に Base サフィックスを追加するのは、それが技術的な観点から存在する場合 (一部のコードを共有するため) と、それ自体では実際に使用可能なクラスを構成しない場合 (つまり、これらのクラスはすべて抽象クラスである) のみにしています。ただし、これは非常にまれなケースであり、Helper クラスと同様に避ける必要があります。