В старые времена мы делали венгерские записи. Теперь это считается пассивным , и по большей части я его больше не использую, но я все еще нахожу использование m_
префикса для обозначения полей-членов.
Для меня, если я читаю чужой код и вижу это:
count = 3;
Я предполагаю, что count
это локальная переменная для этой функции, и я делаю что-то, что будет использоваться в другом месте функции; если я увижу это:
m_count = 3;
Я сразу понимаю, что я обновляю состояние объекта.
Руководства по стилю Microsoft говорят, что это неправильный способ делать вещи. Я должен назвать мои непубличные поля в точности как временные переменные, определенные в функции. Нет m_
, даже не простое подчеркивание.
Да, мы можем определить свой собственный стиль кодирования, но затем мне приходится бороться с различными инструментами статического анализа кода, чтобы убедить их в том, что наш способ работы в порядке.
Я счастлив изменить стиль Microsoft, но я бы хотел знать, почему все так, как есть.
Почему сейчас считается плохим иметь возможность определять, является ли переменная локальной функцией или членом?
PS Это очень похоже на то, что в настоящее время считается наилучшей практикой в отношении ключевого слова «это» перед полем и методами в c #? но я спрашиваю m_
неthis.
PPS Также см. Почему Microsoft сделала так, чтобы параметры, локальные переменные и частные поля имели одно и то же соглашение об именах?
count
они не появляются просто из ниоткуда, поскольку они не были объявлены в методе. Откровенно говоря, аргумент «вне IDE» ДЕЙСТВИТЕЛЬНО слаб. Тем более, что в IDE есть даже инструменты для проверки кода.
this
ключевого слова? Не могли бы вы сослаться на пользователейthis
, использующих , напримерthis.count
?