Имена переменных не должны начинаться с 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
ключевое слово.