Аббревиатура в сгенерированном коде системы .Net

Хотя Microsoft предлагает избегать использования сокращений в коде, почему сгенерированный системой код обработчика событий содержит следующую строку?

private void TextBox1_TextChanged(object sender, EventArgs e)

Обратите внимание, что «е» в аббревиатуре. Это правило не распространяется на обработчики событий?


person Shaan    schedule 31.08.2017    source источник
comment
На самом деле это не венгерская нотация, а просто сокращенное название класса EventArgs.   -  person Steve    schedule 31.08.2017
comment
Нет, на самом деле это нижний верблюжий регистр.   -  person Zee    schedule 31.08.2017
comment
Я думаю, что мне нужно перефразировать мой вопрос сейчас. Говоря о соглашении об именах Microsoft для аббревиатур. Является ли использование e для EventArgs нарушением правила?   -  person Shaan    schedule 31.08.2017


Ответы (2)


Нет, это не венгерская нотация. Это просто сокращенное имя (как упоминалось в комментариях выше). И вам лучше прочитать больше о венгерских обозначениях.

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

Пример: string strName="";
здесь вы указываете тип переменной как часть имени переменной. Но в наши дни он бесполезен по разным причинам.

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

и многое другое.

person Hiran    schedule 31.08.2017
comment
Я думаю, что мне нужно перефразировать мой вопрос сейчас. Говоря о соглашении об именах Microsoft для аббревиатур. Является ли использование e для EventArgs нарушением правила? - person Shaan; 31.08.2017

На ваш вопрос был дан хороший ответ выше, но я добавлю свои 0,02 доллара за венгерскую нотацию.

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

Пример в ответе @Hiran - это то, что часто считается, и Хиран совершенно прав: добавление префикса str к string strName является излишним в современной среде IDE.

Основной вывод из связанной статьи из этого абзаца:

В версии венгерской нотации Симони каждая переменная начиналась с тега нижнего регистра, указывающего на то, что содержится в переменной.

Например, если имя переменной rwCol, rw является префиксом.

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

Я понимаю, что рекомендации Microsoft по не использованию венгерской нотации больше касались того, чем она стала (предварение имени переменной с типом переменной).

Таким образом, изначально предполагалось, что венгерская нотация может использовать string pName (для 'productName') вместо string name.

Что касается первоначального вопроса, то же самое объявление в венгерской нотации может быть больше похоже на:

private void TextBox1_TextChanged(object sender, EventArgs tcArgs)

Учитывая, что эти EventArgs e находятся в обработчике событий, я не уверен, что такое обозначение особенно полезно в данном конкретном случае.

person ainwood    schedule 31.08.2017
comment
Спасибо за подробные обзоры. Я думаю, что мне нужно перефразировать мой вопрос сейчас. Говоря о соглашении об именах Microsoft для аббревиатур. Является ли использование e для EventArgs нарушением правила? - person Shaan; 31.08.2017