Существуют ли установленные альтернативы ISomething / ISomethingable для интерфейсов?

В параллельной конфигурации программы установите для параметра даты значение по умолчанию «выбрать sysdate from dual»

.
11
задан David Arno 7 January 2012 в 19:54
поделиться

8 ответов

Из книги Руководства по проектированию Платформы:

Интерфейсы, представляющие корни иерархии (например, IList), должны также использовать существительные или именные группы. Интерфейсы, представляющие возможности, должны использовать прилагательные и адъективные фразы (например, IComparable, IFormattable).

Кроме того, из аннотаций на интерфейсное именование:

KRZYSZTOF CWALINA: Один из нескольких используемых префиксов является “мной” для интерфейсов (как в ICollection), но это по историческим причинам. Ретроспективно, я думаю, что было бы лучше использовать регулярные имена типов. В большинстве разработчиков случаев не заботятся, что что-то - интерфейс и не абстрактный класс, например.

BRAD ABRAMS: С другой стороны, префикс “меня” в интерфейсах является четким распознаванием влияния COM (и Java) на Платформе.NET. COM популяризировал, даже узаконенный, нотация, которая интерфейсы начинаются “с меня.”. Хотя мы обсудили отклонение от этого исторического шаблона, мы решили продвинуть шаблон, поскольку столь многие наши пользователи были уже знакомы с COM.

JEFFREY RICHTER: Лично, мне нравится префикс “меня”, и мне жаль, что у нас не было большего количества материала как это. Небольшие префиксы с одним символом имеют большое значение для хранения кода, краткого и все же описательного. Как я сказал ранее, я использую префиксы для своих частных полей типа, потому что я нахожу это очень полезным.

Примечание РЕКТОРА БРЕНТА: это - действительно другое приложение Венгерской записи (хотя один без недостатков использования нотации в именах переменной).

Это очень стало широко принятым стандартом, и в то время как это - форма венгерского языка, как Brent заявляет, это не страдает от недостатков использования Венгерской записи в именах переменной.

19
ответ дан 3 December 2019 в 01:09
поделиться

Как программист.NET (по большей части), я на самом деле предпочитаю конвенцию Java отбрасывания I здесь, по простой причине: Часто, маленькие модернизации требуют изменения от интерфейса в абстрактный базовый класс или наоборот. Если необходимо изменить имя, это могло бы потребовать большого ненужного рефакторинга.

С другой стороны, использование для клиента должно быть прозрачным, таким образом, они не должны заботиться об этой подсказке типа. Кроме того, “способный” суффикс в 'Thingable” должен быть действительно подсказкой. Это работает достаточно хорошо в Java.

/ РЕДАКТИРОВАНИЕ: я хотел бы указать, что вышеупомянутое обоснование предложило мне отбрасывать I префикс для частных проектов. Однако после проверки одного из них против набора правила FxCop, я быстро вернулся к использованию I. Непротиворечивость побеждает здесь, даже при том, что глупая непротиворечивость является эльфом небольших умов.

9
ответ дан 3 December 2019 в 01:09
поделиться

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

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

Одна небольшая точка данных: Я работаю и с Java и с C# изрядное количество, и я регулярно имею необходимость для проверки, какие типы в Java являются на самом деле интерфейсами, особенно вокруг платформы набора..NET просто делает это простым. Возможно, это не беспокоит других людей, но это беспокоит меня.

+1 для IFoo от меня.

16
ответ дан 3 December 2019 в 01:09
поделиться

Все о стиле и удобочитаемости. Добавление префикса Интерфейсов с "I" является просто соглашением о присвоении имен и инструкцией по стилю, которая завоевала популярность. Сами компиляторы не могли заботиться меньше.

1
ответ дан 3 December 2019 в 01:09
поделиться

Стандарт кодирования для Symbian имеет интерфейсы (чистые абстрактные классы C++) обозначенный с M, а не мной.

Иначе единственный другой способ, которым я видел обозначения интерфейсов, через контекст.

0
ответ дан 3 December 2019 в 01:09
поделиться

Для.NET книга Руководства по проектированию Платформы Microsoft абсолютно рекомендует это, и да, это в значительной степени стандартно. Я никогда не видел, что сделанный иначе, и создать новую конвенцию только служил бы для смущения людей.

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

0
ответ дан 3 December 2019 в 01:09
поделиться

Я всегда думал, что это соглашение о присвоении имен является чем-то вроде динозавра. В наше время IDE достаточно мощны, чтобы сказать нам, что что-то - интерфейс. Добавление, что я делаю код тяжелее для чтения поэтому, если Вы действительно хотите иметь соглашение о присвоении имен, которое разделяет интерфейсы от классов, я добавил бы Impl к названию класса с реализацией.

public class CustomerImpl implements Customer
0
ответ дан 3 December 2019 в 01:09
поделиться

Вы попросили альтернативу, таким образом, вот тот, с которым я встретился:

Не используйте префикс на интерфейсном классе, но используйте c или префикс C на соответствующих реальных классах. Большая часть Вашего кода будет обычно ссылаться на интерфейс, итак, почему загрязняют его префиксом а не обычно намного менее используемым конкретным типом.

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

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

0
ответ дан 3 December 2019 в 01:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: