Соглашение об именах классов С#: это BaseClass или ClassBase или AbstractClass
Каков рекомендуемый подход к присвоению имен базовым классам? Является ли он префиксом имени типа " Base" или " Абстрактный", или мы просто добавим его в "Base"?
Рассмотрим следующее:
тип: ViewModel
например. MainViewModel, ReportViewModel
базовый класс: BaseViewModel
или ViewModelBase
или AbstractViewModel
Также рассмотрим:
тип: Product
например. VirtualProduct, ExpiringProduct
базовый класс: BaseProduct
или ProductBase
или AbstractProduct
Какой, по вашему мнению, более стандартный?
class Entity : EntityBase
{
}
или
class Entity : BaseEntity
{
}
Ответы
Ответ 1
Есть примеры в Framework с базовым суффиксом, например. System.Configuration.Provider.ProviderBase
, System.Web.SessionState.SessionStateStoreProviderBase
.
Но далеко не все абстрактные базовые классы в Framework следуют этому соглашению (например, System.Data.Common.DbParameter
, System.Data.Common.DbCommand
).
Лично я бы избегал использования суффикса, если бы не хотел подчеркнуть тот факт, что он является абстрактным классом и чувствовал, что в противном случае пользователи класса могут ожидать, что имя укажет конкретную реализацию.
Ответ 2
Ничего из перечисленного. Подумайте, какую цель предлагает ваш базовый класс; Назовите это. Например, базовым классом автомобилей и велосипедов может быть автомобиль.
Если вы создаете базовые классы только для того, чтобы иметь базовый класс одного класса, и без каких-либо целей или причин, кроме этого, вы, вероятно, делаете что-то неправильно.
Ответ 3
Если вы говорите о виртуальных базовых классах, стандартом Microsoft является ClassnameBase (например, CollectionBase.)
Ответ 4
Мы используем BaseEntity, но я думаю, что это ваши собственные предпочтения. Я часто вижу другую.
Просто будьте последовательны в своем контексте, будь то ваш проект, пространство имен или, если возможно, ваша команда. Различные соглашения хуже, чем плохое соглашение IMHO.
Ответ 5
Я думаю, что это вопрос выбора. Я бы сказал, что если вы создаете множество базовых классов, то, возможно, лучше идти с BaseClassname всегда, потому что таким образом вы можете ВСЕГДА узнать, какие базовые классы вы можете начать использовать, просто набрав Base и получив остальную часть помощи от Intellisense. Что, если у вас было 20 базовых классов, и вы добавили Base в качестве суффикса, и вы забыли, что такое имя базового класса? Вы хотите сначала создать диаграмму классов из VS и узнать, какие базовые классы доступны?
Это хорошо, чтобы назвать их ClassBase, когда это всего лишь один или два класса.
То же самое касается решения между функцией GetItems и ItemsGet. Я бы сказал, ради удобства чтения - пойдите для GetItems. Следуйте соглашениям:)
Ответ 6
Лично я бы рекомендовал не добавлять базу слов вообще. Вы никогда не знаете, когда вам придется менять код, и он больше не будет базовым объектом. Сказанное, мы сделали это в прошлом, мы префиксное слово Base на фронте. Кажется, что поток лучше.
Ответ 7
BaseEntity очень похож на случай верблюда - strName, bseEntity. Я бы пошел на EntityBase, так как он сначала определяет тему, которая поможет вам быстрее определить функцию.
Ответ 8
Всегда думайте о алфавите, когда вы называете вещи. Мне действительно не нравится смотреть на SQL-сервер, и каждая хранимая процедура называется usp [something]. Вдоль тех же строк не злоупотребляйте Get и Set в качестве ведущих имен для функции. Вместо GetItems или PlaceOrder, подумайте об их названии как ItemsGet или OrderPlace.
Итак, в общем случае ClassnameBase/EntityBase будет лучшим выбором.