Что означает «о» в качестве префикса переменной? - PullRequest
14 голосов
/ 23 февраля 2011

в ОК?Какое правило?

using(SqlConnection oCn = new SqlConnection(
        "Server=(local);Database=Pubs;User ID=TestUser1;Password=foo1;")) {
        oCn.Open();
        ...
    }

Я нашел этот тип именования в этой статье http://msdn.microsoft.com/en-us/magazine/cc163799.aspx

Ответы [ 8 ]

50 голосов
/ 23 февраля 2011

Совершенно устаревший способ сказать, что «Cn» является * o * объектом.

16 голосов
/ 23 февраля 2011

Я боюсь, что это остаток от некоторой нотации венгерского диалекта для объекта.

В C # и .NET я считаю это бесполезным.

РЕДАКТИРОВАТЬ Кстати, я считаю венгерскую нотацию, содержащую информацию о типе и / или области действия, бесполезной в C #. Мне нравятся приложения венгерской нотации

13 голосов
/ 23 февраля 2011

В этом случае «о» означает объект.Это попытка использовать «системный» вариант венгерской нотации.

Существует два типа венгерского языка: Системы и приложения .Системы используют префикс для определения типа хранимых данных.Например, «i» в iCounter будет означать, что переменная является целым числом.

Приложение венгерский использует совершенно другой подход и указывает, что префикс должен указывать назначение данных.Например, «rw» в rwPosition будет означать строку.

Windows api использует Systems Hungarian.Это привело к большому количеству других программистов, также использующих это.К сожалению, когда в API были внесены изменения, они сохранили старые имена переменных, даже когда реальный тип данных изменился.Это привело к большой путанице относительно того, какой тип данных должен передаваться параметру для данной функции API.Особенно в отношении различных дескрипторов.

В рекомендациях по кодированию .Net MS прямо заявляет, что венгерский не следует использовать .Реальность такова, что они говорят о "венгерских системах";с которым я на 100% согласен.Венгерский «Apps», с другой стороны, имеет массу применений, когда вы описываете данные, а не тип.

В конце дня просто удалите «o».Это ничего не добавляет к программе.

О, и для интересного прочтения, посмотрите на Джоэла на это: http://www.joelonsoftware.com/articles/Wrong.html

5 голосов
/ 23 февраля 2011

Это, вероятно, означает object, как в каком-то сложном типе, который не вписывается в то же (смешное) соглашение, которое именует строки strMyString и целые числа iMyInt и т. Д.

1 голос
/ 28 февраля 2011

Это "правило" взято непосредственно из Как написать не поддерживаемый код :

o_apple obj_apple

Используйте префикс «o» или «obj» для каждого экземпляра класса, чтобы показать, что вы думаете о большой, полиморфной картине.

1 голос
/ 23 февраля 2011

Когда я начал работать программистом 10 лет назад, компания, на которую я работал, использовала похожее соглашение об именах. Я не могу вспомнить, как называется соглашение, но я помню, что все экземпляры объекта имели префикс «o», обозначающий Object.

1 голос
/ 23 февраля 2011

Как предположил @Humberto, кажется, что разработчик использует Венгерская нотация .

1 голос
/ 23 февраля 2011

о для объекта,

это не очень полезное соглашение, в котором по типу переменной было указано имя, поэтому строка была бы strWh независимо. иногда я даже видел obj, то есть objCn

...