Почему я не должен ставить префикс переменных-членов в StyleCop? - PullRequest
2 голосов
/ 20 января 2010

StyleCop только что сообщил мне, что я не должен префиксировать переменные-члены с m_. Это официальная строка в стилях кодирования c #? Я так думаю, как это от MS. Кто-нибудь знает что-нибудь об этом ??

По умолчанию StyleCop запрещает использование подчеркивания, m_ и т. Д. Для пометки полей локального класса в пользу префикса «this.». Преимущество использования «this.» Заключается в том, что оно в равной степени применяется ко всем типам элементов, включая методы, свойства и т. Д., А не только к полям, благодаря чему все вызовы членов класса могут быть мгновенно распознаны независимо от того, какой редактор используется для просмотра кода. , Другое преимущество состоит в том, что он создает быстрое, узнаваемое различие между элементами экземпляра и статическими элементами, которые не будут иметь префикса.

Ответы [ 5 ]

5 голосов
/ 20 января 2010

Имейте в виду, что Стиль Коп - это инструмент для принудительного применения определенного (в данном случае внутреннего от Microsoft) кодирования стиль . Его рекомендациям не следует придавать тот же вес, что и рекомендациям FxCop или любым другим рекомендациям из (превосходной) книги Руководства по разработке структуры. Человек или организация, которые контролируют любой данный исходный код, должны быть источником правил style для этого кода - не существует глобального "официального" стиля кодирования, кроме как "официальная" подпись электронной почты или " официальный 'кодирующий шрифт.

5 голосов
/ 20 января 2010

Хотя мне нравится _ префикс для закрытых полей. Просто отличить их больше, чем просто случай от соответствующих методов получения / установки.

3 голосов
/ 20 января 2010

Это все зависит от вашего стиля. Вы можете войти и изменить это правило, чтобы оно соответствовало вашему стилю кодирования, чтобы оно вас не раздражало. Лично я чувствую, что m_ немного многословно: «Я уже знаю, что это член!» Я бы просто пошел с подчеркиванием бывшего. _member.

2 голосов
/ 27 марта 2014

Если вы посмотрите на раздел Имена членов типа , то там написано:

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

(мой акцент)

Меня всегда раздражало, что Stylecop нравится префикс this. Мне сразу стало ясно, что я звоню учащемуся, потому что я говорю:

Load();

и запись:

this.Load();

На самом деле не говорит мне намного больше, он просто делает мою строку более многословной. Конечно, Load может быть статичным, но какое мне дело?

Лично мне нравится подход m_. Это облегчает мне поиск в коде переменных-членов, все переменные-члены группируются вместе в раскрывающемся списке членов, и когда я ввожу m_, Intellisense немедленно сужает список до всех моих переменных-членов. Вы не получаете ничего этого при использовании префикса this.

Если вы запустите Reflector для основных библиотек C #, вы увидите префиксы, такие как m_ и просто _, поэтому Microsoft явно достаточно гибко именует частных и внутренних членов.

Когда я вижу код с this префиксами для переменных-членов и методов, я склонен понижать свое мнение об этом разработчике, в частности, если разговор об этом заканчивается с их оправданием на том основании, что "Stylecop говорит, что должен".

0 голосов
/ 20 января 2010

Соглашения об именах задокументированы здесь:

http://msdn.microsoft.com/en-us/library/xzf533w0(VS.71).aspx

Венгерская запись не рекомендуется.

...