Использование «Base» в имени класса - PullRequest
26 голосов
/ 04 февраля 2009

Допустимо ли использовать слово «Base» в имени класса, являющегося нижней частью дерева наследования?

Я всегда находил это немного отговоркой, просто интересно, согласен ли кто-нибудь со мной.

Например, если я реорганизую определенные элементы из MyClassA и MyClassB в общий базовый класс, у меня возникнет соблазн создать MyBaseClass, от которого они наследуются.

Но что произойдет, если мне когда-нибудь понадобится провести рефакторинг MyBaseClass? MyBaseBaseClass? Теперь это просто глупо.

Я знаю, что Роки Лхотка не возражает против его платформы CSLA, но я всегда беспокоюсь о «определенных» в программировании.

Мысли

Позвольте мне уточнить почему Я даже беспокоюсь об этом.

У меня есть два пространства имен - MySpecificNamespace и MyCommonNamespace. MyNamespace использует MyCommonNamespace, как и следовало ожидать.

Теперь я хотел бы максимально использовать пространства имен, где это возможно, для описания контекста проблемы и избегать добавления контекста к имени класса. Так, например, учтите, что у меня есть класс в MyNamespace, который происходит от класса в MyCommonNamespace.

Вариант А

Я мог назвать это

MySpecificClass: MyClass
{
}

Но затем я добавляю 'Specific' (контекст) к имени - которое является избыточным, поскольку оно уже находится в MySpecificNamespace.

Вариант B

MyClass: MyCommonNamespace.MyClass
{
}

Вы видите, как мы можем запутаться здесь, верно?

Вариант C

Тот, кого я считаю подозрительным:

MyClass: MyBaseClass
{
}

Ответы [ 12 ]

0 голосов
/ 04 февраля 2009

Обычно я использую IFoo для интерфейса и AbstractFoo для скелетной реализации, представляющей собой смесь соглашений .NET и Java.

0 голосов
/ 04 февраля 2009

Я думаю, что, по возможности, этого следует избегать в пользу идентификатора, который фактически описывает, что это такое!

На этот вопрос сложно ответить, потому что он абстрактный. Я мог бы, например, рассмотреть возможность вызова базы MyClassA и MyClassB «MyClass».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...