Хорошо, я понимаю обычные соглашения об использовании глаголов с функциями и существительных с классами. А как насчет интерфейсов? Есть ли какая-то методология, когда придумывать имена интерфейсов, которые могут быть не столь очевидными?
Просто чтобы прояснить, я не говорю о том, ставить ли «я» перед именем или использовать camelCase или PascalCase. Я задаюсь вопросом о методе определения ясного, семантического имени для интерфейса.
РЕДАКТИРОВАТЬ Я зациклен на том, как назвать интерфейс наиболее понятным способом. Я думаю, это просто должно быть и существительное, потому что, когда я думаю о наименовании классов, я думаю о ближайшем «реальном» объекте мира, к которому он может относиться. Я полагаю, что реальные интерфейсы - это клавиатура, мышь, пульт дистанционного управления, экран банкомата. Это все существительные. В любом случае, любая дополнительная информация о хорошем способе формулирования имен интерфейсов будет принята с благодарностью.
источник
Ответы:
Я бы сказал, что это зависит от того, что определяет интерфейс. В некоторых случаях, когда интерфейс довольно специфичен и детален, я думаю, что существительное лучше. Примерами являются
IList
,ICollection
.Иногда, хотя интерфейс больше о добавлении определенных общих функций в класс. В этом случае я думаю, что прилагательное лучше. Примерами могут служить
IDisposable
,IEnumerable
...Возможно, еще один способ думать об этом - это то, сколько «способностей» определяет ваш интерфейс.
Например,
IList<T>
интерфейс определяет следующие возможности: Добавить, Очистить, Содержит, Вставить, Удалить, ... Это все свойства списка, поэтомуIList
это хорошее имя.IDisposable
с другой стороны, определяет только одну способность: Dispose. Таким образом, он подходит для всего, что является одноразовым. Отсюда и названиеIDisposable
.источник
IEnumerable
), существительное «_er», если ваш интерфейс будет назван в честь того, что ваш объект делает с другими объектами ( напримерIEqualityComparer
, и общее существительное, если ваш интерфейс назван в честь типа вещи, поведение которой он имитирует (напримерIList<T>
).I
избыточностью.Интерфейс описывает поведение таким образом , имена должны так сказать. Я не уверен насчет правила для этого, но вы узнаете имя, когда услышите его.
Некоторые примеры:
Я думаю , что это не является правильным назвать интерфейсы с
I
и вызватьSet
с ,ISet
потому что, как разработчик, вы не должны быть обеспокоены тем, является ли это интерфейс или класс. Я вижу, что эта практика не существует в Java сейчас.источник
I
избыточно независимо. Тогда почему бы не добавить префиксы к абстрактным классамA
, обычные к классам иC
т. Д. ??Поскольку интерфейс на самом деле является просто выражением типа «что», а не «как», я бы назвал их так же, как вы называете классы, по крайней мере, с точки зрения речи. Единственное, что я могу добавить к этому, - это то, что они часто будут более общими, чем конкретные реализации (например, интерфейс «Клиент» может иметь реализации «ProspectiveCustomer» и «PayingCustomer»).
источник
Интерфейс используется как класс. Следовательно, оно также должно именоваться существительным, когда вы называете классы существительными. Предпочитайте абстрактные существительные, например, «Автомобиль», когда классы «Автомобиль» и «Грузовик».
источник
Быстрый ответ: Интерфейс - это скорее добавление набора способностей, функций, общих границ или взаимосвязей между сущностями, классами, моделями, концепциями и т. Д.
Пришло время добавить общее поведение к классам и сущностям, а затем подойдет хорошее осмысленное имя для определения набора реализованных функций.
Именование интерфейса вроде:
IStateMachineBuilder, IUserContextProviderBuilder, IEntityBuilderBuilder, IActiveAware, etc.
возможно, объяснить концепцию.источник
IStateMachineBuilder
(имя существительное),IBuildStateMachine
(названо в честь действия),ICanBuildStateMachine
(названо в честь возможности) и т. Д.Это зависит от того, если интерфейс содержит только методы, было бы хорошо назвать его, используя глаголы типа «Действия», где, как если бы он представлял универсальный класс, который содержит статические, конечные поля, тогда мы можем использовать универсальное Существительное, такое как «Автомобиль».
источник