Ответ 1
Хотя трудно прочитать, IItem
будет соответствовать некоторым существующим интерфейсам "II
":
Я хочу создать интерфейс для "Items". Типично я бы назвал интерфейс, добавив и префикс "I" к базовому слову. Но в этом случае мое базовое слово уже начинается с I. Вот несколько идей, которые у меня были
Что выглядит лучше? Кто-нибудь еще сталкивается с этой проблемой. Если да, то что вы сделали?
Хотя трудно прочитать, IItem
будет соответствовать некоторым существующим интерфейсам "II
":
Просто IItem
. Нет необходимости в исключении.
Интерфейсы начинаются с двух букв верхнего регистра (I [A-Z]), которые идентифицируют их как интерфейс. Итак, Item
не является интерфейсом, но IItem
есть.
Изменить 2016/08/12: Я изначально предоставил этот ответ в качестве альтернативной перспективы для соглашений об именах. Мой ежедневный С# теперь использует I
-prefixing, чтобы держать вещи идиоматичными и уменьшать познавательное бремя через согласованность. Я считаю, что последовательность важнее, чем проблемы, которые я поднимаю ниже. Короче говоря, придерживайтесь условностей базы кода, в которой вы работаете.
Просто Item
. Не потому, что интерфейс начинается с I
, а скорее потому, что классы префикса с идентификационными буквами не нужны. Декорирование интерфейсов с I
столь же уродливо, как и пощечивание C
перед вашими конкретными именами классов (a la MFC). Типы префикса с чем-либо так же плохи, как использование венгерской нотации.
Вы можете утверждать, что это на самом деле дает вам семантическое значение, но я не уверен. У меня есть современная IDE, и мне больше не нужны мои имена типов.
В соответствии с соглашением об именах .Net имени интерфейса должно предшествовать сообщение "I", за которым следует имя интерфейса в случае с Camel.
Поэтому я предлагаю вам назвать интерфейс Item как:
IItem
Не нужно упомянуть "интерфейс" в конце, потому что буква "I" в самом начале говорит, что это интерфейс, не требуется явно указывать.
Вы можете видеть, что ребята из MS используют System.ComponentModel.IItemProperties