Как я называю интерфейс, когда базовое слово начинается с I? - PullRequest
23 голосов
/ 26 августа 2010

Я хочу создать интерфейс для «Предметов».Обычно я называю интерфейс, добавляя и префикс «I» к базовому слову.Но в этом случае мое базовое слово уже начинается с буквы I. Вот пара идей, которые у меня были

  • IItem : Two I's
  • Iitem : изменить регистр
  • ItemInterface : пропустить префикс I и записать интерфейс

Что выглядит лучше?Кто-нибудь еще сталкивался с этой проблемой.Если так, что ты сделал?

Ответы [ 5 ]

28 голосов
/ 26 августа 2010

Несмотря на трудность чтения, IItem будет соответствовать некоторым существующим интерфейсам "II":

8 голосов
/ 26 августа 2010

Просто IItem.Нет необходимости в исключении.

Интерфейсы начинаются с двух букв верхнего регистра (I [AZ]), которые идентифицируют их как интерфейс.Так что Item - это не интерфейс, а IItem - это.

3 голосов
/ 26 августа 2010

В соответствии с соглашением об именах .Net имени интерфейса должно предшествовать заглавная буква «I», за которой следует имя интерфейса в случае Camel.

Поэтому я предлагаю вам назвать элемент интерфейса как:

IItem

Нет необходимости упоминать «Интерфейс» в конце, потому что Буква «I» в самом начале говорит о том, что это Интерфейс, не требуется явно упоминать.

2 голосов
/ 26 августа 2010

Изменить 2016/08/12: Первоначально я предоставил этот ответ в качестве альтернативной точки зрения на соглашения об именах.Мой повседневный C # теперь использует I -приставку, чтобы сохранить идиоматизм и уменьшить когнитивную нагрузку через последовательность.Я думаю, что последовательность важнее, чем вопросы, которые я поднимаю ниже.Короче говоря, придерживайтесь соглашений кодовой базы, в которой вы работаете.


Просто Item.Не потому, что интерфейс начинается с I, а потому, что префикс с идентифицирующими буквами не является обязательным.Украшение интерфейсов с помощью I так же уродливо, как шлепание C перед вашими именами конкретных классов (в стиле MFC).Приставка типов к чему-либо так же плоха, как использование венгерской нотации.

Можно утверждать, что на самом деле это дает вам семантическую ценность, но я не уверен.У меня современная IDE, и мне не нужно, чтобы имена типов были более сложными.

2 голосов
/ 26 августа 2010

Вы видите, что парни из MS используют System.ComponentModel.IItemProperties

...