Имена переменных не должны начинаться с m_: StyleCop Rule 1308 - Почему это считается плохой (или не очень хорошей / стандартной) практикой? - PullRequest
6 голосов
/ 20 апреля 2011

Я начал использовать StyleCop, и он выдает предупреждение везде, где есть переменная, объявленная как m_VariableName.

Предупреждающее сообщение: Variable names must not start with 'm_'. Это правило StyleCop SA1308.

Я могу отключить это правило. Но

1) Я хотел бы знать, почему это плохая практика или считается плохой практикой объявлять имена переменных, начинающиеся с 'm _'?

2) Имеет ли символ подчеркивания особое значение для рефакторинга Visual Studio? (Я слышал это от одного из старших разработчиков.)

Ответы [ 4 ]

9 голосов
/ 20 апреля 2011

Стандартные правила StyleCop соответствуют стилю кодирования Microsoft C # .

К ним не относится m_ в качестве префикса (рассматривается как Венгерская нотация ).

Если ваша команда не следует этим правилам стиля и имеет свои собственные, не стесняйтесь отключить правило.

6 голосов
/ 20 апреля 2011

Это просто соответствует правилам Microsoft по именованию полей :

Не используйте префикс для имен полей. Например, не используйте g_ или s_ для различения статических и нестатических полей.

Я полагаю, что это была часть общей чистки венгерского языка, которую Microsoft пыталась осуществить, когда они представили .NET.

Но, как и во всем, что касается стиля кодирования, если он не соответствует тому, что вам и / или вашей команде удобно, то не используйте его.

3 голосов
/ 20 апреля 2011

Я не думаю, что это плохая практика - лично я предпочитаю печатать и читать m_banana, чем this.banana. StyleCop имеет некоторую кодировку по умолчанию соглашений для проверки, и если они вам не нравятся, или вы уже используете другие соглашения, отключите предупреждения или напишите свои собственные правила.

0 голосов
/ 20 апреля 2011

Я не совсем уверен в этом, но некоторые разработчики имеют тенденцию ставить перед именами полей объекта m_. Если вы откроете рефлектор, вы увидите, что это обычная практика в коде Microsoft.

Многие книги также содержат подобные примеры.

Теперь, почему это плохая практика ... Понятия не имею :) Лично я не делаю этого и всегда ставлю поля с ключевым словом this.

...