Почему префикс C # имен интерфейсов с «I»

var elements = $('div ' + yourSearch);
29
задан Community 23 May 2017 в 11:54
поделиться

11 ответов

Полное противоположное, соглашение о присвоении имен ясно определяет интерфейс.

, Например, если Вы имеете:

public class Dog : IPet, IMammal
{
    ....

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

CLR.NET допускает наследование единого класса. Так, если у меня есть базовый класс.. Я могу только наследовать один класс от него. Позволяет изменяют интерфейс IPet на базовый класс.. наш пример теперь становится

public class Dog : Pet, IMammal
{
    ....

, я наследовался Любимому классу и реализую интерфейс IMammal.

, Если мы сделали это, что Вы предлагаете и удалили букву "I", у нас есть это:

public class Dog : Pet, Mammal
{
    ....

, Какой является классом, которому я наследовался? Который является интерфейсом, который я реализую? Это получает запутывающее право? (К вашему сведению.. Вы, как предполагается, помещаете базовый класс всегда сначала, таким образом, Вы могли оспорить ту точку зрения..., но если Вы требуете удалять букву I из добавления префикса имен интерфейса, я сомневаюсь, что Вы применяете ту практику также)

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

53
ответ дан Bart Czernicki 23 May 2017 в 11:54
поделиться
  • 1
    Для меня, RingtoneManager.TYPE_NOTIFICATION играет длинный полифонический " новое текстовое сообщение arrived" тон. Я don' t видят опцию, которая получит OP, их стандартный объем изменил звуковой сигнал. – ahcox 2 May 2012 в 14:45

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

Однако я все еще использую его, потому что в этом случае IInterface рекомендуется Microsoft, и "стандарт лучше, чем лучше".

24
ответ дан Sean Reilly 23 May 2017 в 11:54
поделиться
  • 1
    Я только вижу, что одна строка идет через по некоторым причинам:/ – SearchForKnowledge 13 October 2014 в 16:04

Скорее всего, для создания его легко идентифицирующимся в intellisense так как все интерфейсы нанесут удар вместе. Подобный тому, как я снабжаю префиксом все свои средства управления UI btn, ТБ, lb. Когда удары intellisense во всем собраны в группу вместе в одной легкой группе.

-1
ответ дан Kwan Cheng 23 May 2017 в 11:54
поделиться
  • 1
    Привет @ungalcrys, я не имею возможности перепроверять это легко в данный момент, но корреспондент попросил, " звук звукового сигнала андроида по умолчанию (как то, когда Вы корректируете громкость звонка), ". когда я протестировал, который был точно тем, я даю выше: ToneGenerator.TONE_PROP_BEEP. – ahcox 10 February 2015 в 16:17

Мне также нравится он причина, я могу считать его как "Я поведение глагола" как в "ICanSave" или "IDoDoubleEntry" и т.д.

30
ответ дан Charles Bretana 23 May 2017 в 11:54
поделиться

Это делает его легко идентифицирующимся как интерфейс.

2
ответ дан scottm 23 May 2017 в 11:54
поделиться
  • 1
    @xan: IMO, на который необходимо было ответить с некоторым кодом (или псевдокодом), а не математическая нотация, так как это - вопрос о программировании. –  26 December 2013 в 23:01

Это - или это, или добавьте "Impl" к реализации интерфейса (argh). У меня нет проблемы с "I", это является самым простым и большая часть простого именования для интерфейса.

3
ответ дан Otávio Décio 23 May 2017 в 11:54
поделиться

На самом деле я нахожу полезным постараться не называть столкновения, я мог бы, например, создать реальный класс по имени Fred, который реализует IFred

11
ответ дан Tim Jarvis 23 May 2017 в 11:54
поделиться
  • 1
    curve' s длина действительно твердо иметь размеры так или иначе. В t=0.5 Вы будете в среднем, если Вы примете случайные контрольные точки быть в центре. Но, действительно обратите внимание, что это имеет ту же проблему как большинство кривых переменной скорости. Нахождение средней точки обычно было бы, требуя имеющих размеры частей кривой и находя центральный бит с двоичным поиском. It' s не точно супер обычно необходимый. Но, стоит понять это при нахождении всех точек точек в t =. 1 инкремент они не будут равны в длине. - Хотя это имеет мало общего с вопросом и много, чтобы сделать с природой кривых. – Tatarize 12 September 2016 в 23:04

Соглашения о присвоении имен предлагают преимущество сообщения Вам что-то об объекте перед использованием его. Соглашения о присвоении имен широко много лет использовались, идя полностью назад в настойчивость Фортрана, что целочисленные значения были ограничены (если я помню правильно) к именам переменной как "i" и "j".

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

имена интерфейса Добавления префикса с я относительно низкое влияние, безопасный способ определить тот объект.

1
ответ дан Kluge 23 May 2017 в 11:54
поделиться
  • 1
    Так, это означает: Point.x = (1-t) ^2 * P0.x + 2 * (1-t) * t * P1.x + t^2 * P2.x; Point.y = (1-t) ^2 * P0.y + 2 * (1-t) * t * P1.y + t^2 * P2.y; Протестированный и это работает! =) Спасибо! – Christian Engel 12 April 2011 в 13:13

Я всегда считал забавным использовать глаголы для поведенческих интерфейсов. Это отход от соглашения об именовании классов с использованием существительных, но он позволяет классу «говорить» со своим поведением.

class Dog: IBark

Это плохо работает для структурных интерфейсов, таких как интерфейсы WCF, но нам не нужно все время развлекаться.

чтобы ответить на ваш вопрос, подумайте о I как о «реализации» Итак ...

class DogDataService : Dog, IDataService

этот служебный класс наследуется от Dog и реализует IDataService

Я все еще не отвечаю на ваш вопрос, но I полезен, потому что вы получаете коллизии имен между пространством имен, классом и интерфейсом.

namespace DataService
interface DataService
class DataService: DataService

поэтому мы получаем

namespace DataServices
interface IDataService
class DataService : IDataService

Я думаю, что на самом деле это соглашение здравомыслия.

5
ответ дан 28 November 2019 в 00:34
поделиться

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

.
0
ответ дан 28 November 2019 в 00:34
поделиться

Во-первых, я считаю, что префикс I, а затем описание неверен, потому что это означает, что реализации могут иметь более короткое имя. IList (intf) -> Список. Это анти-шаблон, поскольку все мы знаем, что при создании следует использовать intf и, вероятно, только конкретные типы. Не огорчай меня, это обобщение, но исходная посылка возникает редко. Название реализации должно описывать, как она реализует intf или что она делает. Подумайте intf List, LinkedList, который реализует List с использованием связанного списка. Кого волнует, длиннее ли это, поскольку мы должны использовать List большую часть времени.Если у нас есть класс, реализующий множество intf, мы, вероятно, не должны включать все intf, поскольку тени являются реальной целью класса. В случае, если что-то удалено без intf, имеет смысл. Например, люди зовут меня по имени, а не по имени, а не по имени, брат или сестра, разработчик и т. Д. Использование моего имени - это лучшее, наиболее информативное имя. Я полагаю, что если класс подразумевается как простой intf, тогда назовите его Default Intf, что делает его единственной реализацией Intf по умолчанию. Имена классов должны быть понятны человеку и должны быть почти короткими фразами, описывающими их назначение. Коды префиксов и т. Д. Не очень хороши, поскольку мы общаемся словами, а не кодами. Компьютеры не знают, какие классы называются, поэтому остается то, что мы называем вещи так, чтобы имена помогали нам и нашим коллегам.

0
ответ дан 28 November 2019 в 00:34
поделиться
Другие вопросы по тегам:

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