Я знаю, что этот вопрос задавался чуть-чуть, и, судя по всему, нет ясного ответа на этот вопрос, да или нет, но все же я немного смущен чем-то.
Обычно, когда я программирую, я следую нескольким правилам о префиксах:
- m_ перед элементами
- p_ перед свойствами
- s_ передстатического
- a_ перед параметрами
- l_ перед локальными переменными
Я получил новую работу прямо сейчас и заметил, что префиксы не используютсяв коде.Я спросил почему, и они ответили, что IDE выполняют всю работу по отслеживанию того, что является переменной-членом и что является локальной переменной.Теперь я думаю, что это может быть так, но не проще ли использовать префиксы в любом случае?
Я имею в виду, если у меня, например, есть член, статическая и локальная переменная с именем «робот»не будет ли боль в заднице ссылаться на нее при написании метода?Возможно, это нереалистичный пример, но мне нравится иметь хороший набор правил в моей голове, который я могу применять последовательно, даже для нереалистичных условий.
Оправдывает ли этот пример использование венгерской нотации?
Думаю, я составлю список плюсов и минусов и отредактирую его, когда узнаю больше об этом.
Аргумент против венгерского:
Class.Robot
или Robot
this.robot
robot
Нет необходимости в венгерском языке.
Счетчик:
Есть еще несоответствие, робот может означать разные вещи в разных методах.Чтобы оставаться последовательным, вы должны ставить префикс Class или этот (или ничего) перед каждой переменной Robot.
Кроме того, допустим, вы хотите получить доступ к статической переменной Strawberry, откуда вы знаете переменную-член с именем Strawberry isnне определены?Возможно, он определен в другом файле, который вы не можете видеть, поэтому вы можете получить неожиданные результаты.Теперь вы можете сказать, что это видно через IDE, но я привожу аргумент о том, что использование префикса лучше, потому что вы видите, на что ссылаетесь, в то время как вы можете пропустить то, что говорит вам IDE.Вы также можете использовать префиксы / Classname, конечно, но такого рода поражения с целью не использовать венгерскую нотацию.
Аргумент против венгерского:
Нарушение этогоПравило возникает, когда венгерская нотация используется при именовании полей и переменных.Использование венгерской нотации стало широко распространенным в коде C ++, но тенденция в C # заключается в использовании более длинных, более описательных имен для переменных, которые не основаны на типе переменной, но вместо этого описывают, для чего используется переменная.
Счетчик:
Префиксы, которые я упоминал, не основаны на типе переменной, префиксы действительно указывают, для чего используется переменная.
Аргумент против венгерского:
Современные редакторы кода, такие как Visual Studio, упрощают идентификацию информации о типе для переменной или поля, обычно путем наведения курсора мыши на имя переменной.Это уменьшает потребность в венгерской нотации.
Счетчик:
Хотя это и правда, я сам почти никогда не нахожу указатель мыши над именем переменной, если не произошла ошибка,Напротив, с венгерской нотацией вы сразу видите, где находится ваша переменная в классе.
Примечание:
Не рекомендует ли Microsoft использовать венгерскую нотацию для имен файлов?Я прочитал, что это условное обозначение файлов интерфейса перед I, это форма венгерской нотации.Хотя это не имеет прямого отношения к моему вопросу выше, оно поднимает вопрос о том, что иногда рекомендуется использовать венгерские обозначения.