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