Обычно считается плохой практикой использовать венгерскую нотацию , но обычно встречаются элементы управления GUI с именами userNameTextBox
и userNameLabel
.
Вы помещаете тип управления в его названии? Разве это не венгерская нотация?
Обычно считается плохой практикой использовать венгерскую нотацию , но обычно встречаются элементы управления GUI с именами userNameTextBox
и userNameLabel
.
Вы помещаете тип управления в его названии? Разве это не венгерская нотация?
Ответы:
Как вы говорите. В целом, венгерские обозначения - плохая практика. Мне нравится, чтобы мои имена были как можно ближе к домену, но иногда вы пытаетесь сказать, что это текстовое поле, а это метка .
См . Ответ Крамии на другой вопрос, чтобы узнать, почему он до сих пор использует венгерский в определенных ситуациях.
Как и во всем коде, последовательность и самооценка являются ключевыми. Если вы и ваша команда согласны с тем, как помечены различные элементы управления GUI и какие элементы нуждаются в ярлыках, у вас все будет в порядке :)
На самом деле я использую венгерскую нотацию, только для графического управления. Я использую что-то вроде lblText, rbGroup1, lvTable и т. Д. Для меток, переключателей и списков.
Они все равно никогда не меняются, и понятно, какая переменная является элементом управления графическим интерфейсом, а какая нет.
Однако, поскольку я использую WPF с возможностями связывания, в действительности больше нет необходимости называть их вообще, поскольку он связан со свойством C #.
Кстати, не делайте ошибку, чтобы вызвать элемент управления lvListViewPersons, что я иногда вижу. Если переменная имеет префикс lv, вы можете видеть, что это уже список.
Наша команда использует венгерскую нотацию для элементов управления графическим интерфейсом, а не для остальной части кода.
Типичный пример, метка, за которой следует текстовое поле:
Кроме того, это облегчает поиск вашего текстового поля, просто наберите «txt» и intellisense сделает все остальное.
Я использую венгерскую нотацию для элементов GUI. Это действительно боль , когда вы закрываете QtDesigner, откройте Visual Studio и когда вы хотите установить текст на кнопке , если у вас есть текстовое поле с именем username
, password
и т.д. При использовании Qt, это не большая проблема, потому что все элементы GUI завернуты внутри ui
объекта ( ui.username
), но когда я использую Windows Forms, текстовое поле с именем username только увеличивает пространство имен.
В этом случае txtUsername
, btnLogin
, lblStatus
и т.д., явно лучшие варианты.
Я избегаю использования венгерской нотации для элементов управления GUI - я бы не стал называть такой элемент управления, как `lblFirstName ', потому что мне все равно, что это метка - с точки зрения привязки данных это просто что-то связываемое.
Для элементов управления, которым нужно имя, я обычно добавляю префикс ux
«пользовательский опыт». Это дает понять, что элемент предназначен только для взаимодействия с пользователем. Например, у моей модели представления может быть вызвано свойство, FirstName
а у представления может быть вызван элемент управления uxFirstName
. Это дает дополнительное преимущество: все мои именованные элементы управления хорошо сгруппированы в моей IDE.
ux
префикс венгерской нотацией? Может быть, другой вид (я забыл имена двух), который указывает значение, а не тип, но все еще является формой венгерского ;-)
apps hungarian
а не systems hungarian
. Венгерские приложения не считаются столь же вредными, как системы, но я думаю, что значение «ux» может быть слишком высоким, чтобы даже считаться приложениями. Я думаю, вы могли бы назвать это слой венгерский или что-то :)
Я знаю, что люди в целом не переносят венгерскую нотацию, но я все еще нахожу ее очень полезной во многих местах. Для GUI я использую как минимум префикс wnd.
Проблема неиспользования венгерской нотации проста: как только вы покидаете гладкие воды MSVS, навигация совершает погружение в нос. Вы видите какой-то вид, SomeValue = SomeOtherValue
и у вас нет ни малейшего понятия, что происходит, если вы не посмотрите на каждую чертову вещь. Через grep или старый добрый поиск, который обычно убивает производительность, IDE, отличные от QT и MSVS, действительно плохо справляются с поиском.