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