Я только начал использовать ReSharper (для C #), и мне нравится, что его код пахнет искателем, он показывает мне кое-что о моем написании, которое я хотел исправить давным-давно (в основном, соглашения об именах переменных).
Это заставило меня пересмотреть некоторые из моих соглашений об именах для методов и переменных экземпляра. ReSharper предлагает, чтобы переменная экземпляра была в нижнем регистре верблюдов и начиналась с подчеркивания. Какое-то время я хотел сделать все мои локальные переменные строчными, но нужно ли подчеркивание? Вам это удобно? Мне не нравится это соглашение, но я еще не пробовал его, что ты думаешь об этом?
Второе, что побудило меня переоценить это мои соглашения об именах для обработчиков событий GUI. Я обычно использую стандарт VS ControlName_Action, и мои элементы управления обычно используют венгерскую нотацию (в качестве суффикса, чтобы помочь прояснить в коде, что видно пользователю, а что нет при работе с переменной с аналогичным именем), поэтому я в конечном итоге получаю OK_btn_Click ( ) что вы думаете об этом? Должен ли я уступить соглашению ReSharper или есть другие одинаково действительные варианты?
Что касается
Одна вещь, которая мне больше всего нравится в использовании подчеркивания, это то, что он значительно сокращает использование «этого».
Рассматривать:
без подчеркивания вы должны написать:
который потенциально вводит тонкую ошибку:
Кроме того, завершение кода является более чистым, потому что, просто связав подчеркивание, вы получите список только приватных полей, тогда как «this» вы получите список всего.
Что касается
Руководство по разработке структуры: условные обозначения, обозначения и шаблоны для многократно используемых библиотек .NET гласят:
Оставляя мало места для двусмысленности :)
источник
this.size
это намного яснее, чем_size
. Использование подчеркнутого имени не предотвращает скрытую ошибку, вы все равно можете назначить размер себе, хотя, надеюсь, ваш компилятор скажет вам.this.size
и_size
является последовательностью. С темthis.size
, что это необязательно. Например, если было вызвано другое закрытое полеname
,this.name
в коде нет необходимости его использовать , я мог бы так же легко использовать егоname
без каких-либо конфликтов. Потому чтоthis
может использоваться иногда, а не в других случаях, поэтому использованиеthis
уступает. С другой стороны, нет никакой двусмысленности с_
...Последовательность действительно ключ. Это и ясность, то есть не будьте загадочны или пытайтесь сохранить печатание, сокращая все. Intellisense - это ваша заставка, а не загадочные (но короткие!) Имена.
источник
order.Size()
(в отличие отorder.getSize()
), но так как другие библиотеки используют методы получения и установки, мой код не будет согласованным.В C # запуск защищенного или публичного имени с подчеркиванием не соответствует спецификации общего языка. Это правильно только в случае частных пользователей.
Из MSDN:
Смотрите: http://msdn.microsoft.com/en-us/library/12a7a7h3.aspx
Здесь вы можете прочитать предупреждение о подчеркивании:
Смотрите: http://msdn.microsoft.com/en-us/library/81ed9a62.aspx
Защищенные члены являются проблемой, потому что вы можете наследовать от класса, написанного на другом языке.
Но, возможно, это не проблема в вашем случае, если вам не нужен CLS-компилируемый код.
источник
Мне нравятся подчеркивания. На первый взгляд, вы знаете, что переменная является членом класса и частной.
Конечно, IDE может сказать вам, что когда вы наводите курсор мыши на нее, «первый взгляд» не может быть побежден. Вы знаете, что такое локальная переменная, и что такое переменная-член вашими глазами. Нет необходимости в прокрутке или наведении мыши.
Вы можете использовать ключевое слово "this", но _ короче для лучшей горизонтальной сканируемости. Описательные имена обычно желательны, но когда что-то является установленным соглашением, лучше иметь 1 символ. например, используя букву i в качестве индекса при циклическом просмотре массива. Поскольку существует установленное соглашение о том, что i является индексом, вы получаете преимущество сканируемости, не задумываясь о том, что означает «i».
источник
Я в целом согласен с тем, что говорят другие, однако когда дело доходит до инструментов и цепочек инструментов, я ленив и люблю легкую жизнь. Я считаю, что жизни часто легче просто сделать это так, как они предлагают. Причины
Поэтому я бы хотел, если бы вы могли найти вескую причину для перенастройки инструментов, на которые вы только что потратили целое состояние, во что бы то ни стало сделайте это. Если вы не можете оправдать внесение изменений, не делайте этого.
Имейте в виду, что каждое изменение имеет постоянную стоимость (реальную и скрытую). Чем меньше, тем ниже стоимость. Например - тот новый парень, которого я упомянул - без изменений означает, что он может прочитать их руководство. Переконфигурируйте - вы должны написать приложение, сохранить его вместе с другими материалами, удалить его и заставить его прочитать его после прочтения их руководства. Может быть, не проблема для магазина на 2 человека, но как насчет магазина на 100 человек?
источник
Два правила, о которых вы спрашиваете, подчеркивают в начале имена частных полей и имена методов, как правило, считаются нормой в кругах разработки C #. Приспосабливаясь к этим соглашениям, ваш код будет сразу более понятен другим разработчикам, потому что это образ мыслей, в котором они привыкли работать.
Суффикс Label, RadioButton и т. Д. Для ваших элементов управления обычно также считается нормой. Часто для одной концепции существует несколько элементов управления (например, Label и TextBox), и этот суффикс весьма полезен. Истинная венгерская нотация давно была заброшена, потому что она была превращена в нечто, что не выражало ее первоначальное намерение, а именно контекст переменной, а не тип, размер и т. Д.
источник
В моем случае использование верблюда и подчеркивания помогает с описательными (читай: длинными) именами переменных и завершением кода. Я не совсем уверен, как работает автозаполнение Visual Studio, но в QtCreator и, в меньшей степени, в Eclipse, можно напечатать, например,
и расширить его до
Сохраняет немного ввода в случае, если у вас есть такие имена, как
который я склонен производить в «режиме описательного именования».
Используя подчеркивания, я могу определить, какое имя я хочу автозаполнить
или же
Надеюсь, мое объяснение достаточно ясно :)
источник