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

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

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

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

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

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

4 ответа

Решение

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

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам