Соглашение об именах классов C #: базовый класс, базовый класс или абстрактный класс

StackOverflow https://stackoverflow.com/questions/826821

Вопрос

Каков рекомендуемый подход к именованию базовых классов? Это префикс имени типа с " Base " или " Аннотация " или мы просто добавим суффикс "Base"?

Примите во внимание следующее:

type: ViewModel , например. MainViewModel , ReportViewModel

базовый класс: BaseViewModel или ViewModelBase или AbstractViewModel

Также рассмотрим:

type: Product , например. VirtualProduct , ExpiringProduct

базовый класс: BaseProduct или ProductBase или AbstractProduct

Как вы думаете, что является более стандартным?

class Entity : EntityBase
{
}

или

class Entity : BaseEntity
{
}
Это было полезно?

Решение

В Framework есть примеры с базовым суффиксом, например, System.Configuration.Provider.ProviderBase , System.Web.SessionState.SessionStateStoreProviderBase .

Но ни в коем случае не все абстрактные базовые классы в Framework придерживаются этого соглашения (например, System.Data.Common.DbParameter , System.Data.Common.DbCommand ).

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

Другие советы

Ничего из вышеперечисленного. Подумайте, какую цель обеспечивает ваш базовый класс назовите это так. Например, базовым классом автомобилей и велосипедов может быть автомобиль.

Если вы создаете базовые классы просто для того, чтобы иметь базовый класс одного класса, и без какой-либо цели или причины, кроме этого, вы, вероятно, делаете что-то не так.

Если вы говорите о виртуальных базовых классах, то стандартом Microsoft является ClassnameBase (например, CollectionBase.)

Я думаю, что это вопрос выбора. Я бы сказал, что если вы создаете много базовых классов, то, возможно, лучше использовать BaseClassname всегда, потому что таким образом вы ВСЕГДА узнаете, какие базовые классы вы можете использовать, просто набрав Base и получив остальную часть справки от Intellisense. Что если у вас было 20 базовых классов, и вы добавили Base в качестве суффикса, и вы забыли, как назывался базовый класс? Вы хотите сначала создать диаграмму классов из VS и узнать, какие базовые классы доступны? Можно назвать их ClassBase, когда это всего один или два класса.

То же самое относится и к решению между GetItems и функцией ItemsGet. Я бы сказал, что читаемость ради хотя бы - пойти на GetItems. Следуйте соглашениям:)

Мы используем BaseEntity, но я думаю, что это ваше собственное предпочтение. Я часто вижу другого.

Просто будьте последовательны в своем контексте, будь то ваш проект, пространство имен или, если возможно, ваша команда. Различные соглашения хуже, чем плохие соглашения ИМХО.

Лично я бы рекомендовал вообще не добавлять слова. Вы никогда не знаете, когда придется менять код, и он больше не будет базовым объектом. При этом, мы делали это в прошлом, мы поставили перед словом «Base». Кажется, течет лучше.

BaseEntity очень похож на случай верблюда - strName, bseEntity. Я бы пошел на EntityBase, так как он сначала определяет предмет, который поможет вам быстрее определить его функцию.

Всегда думайте об алфавите, когда называете материал. Мне действительно не нравится смотреть на сервер SQL, и каждая хранимая процедура называется usp [что-то]. Кроме того, не злоупотребляйте Get и Set в качестве ведущих имен для функции. Вместо GetItems или PlaceOrder подумайте о присвоении им имен ItemsGet или OrderPlace.

Итак, в общем, ClassnameBase / EntityBase был бы лучшим выбором.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top