2009-05-27 5 views
2

Я перестал использовать венгерскую нотацию везде, кроме пользовательского интерфейса, где часто у меня есть метка имени пользователя, текстовое поле имени пользователя, локальная переменная имени пользователя, обязательный полевой валидатор, свойство и метод имени пользователя и т. Д. часто все в одном контексте.Рекомендации по назначению для замены/исключения венгерской нотации в пользовательском интерфейсе?

ток: lblUser, txtUser, rfvUser, _User, пользователь, пользователь

Если я очевидный, UserLabel, UserTextBox, UserRequiredFieldValidator, кажется, что я просто substiuting длинных суффиксов для более коротких префиксов.

И поле индикации указывает, помечено FxCop, но без префикса оно столкнулось бы с одобренным Соглашением пользователя/пользователя.

Любые предложения?

ответ

4

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

Я бы использовал такие вещи, как m_firstNameTextBox или m_countryComboBox для элементов управления пользовательского интерфейса, а затем m_firstName и m_country для строковых значений этих элементов управления.

В конце дня вы должны использовать все, что захотите. Правило одеяла, чтобы избежать венгерской нотации, так же плохо, как тот, который предусматривает религиозное использование. Это пошло, что такие вещи, как intCounter, strName, являются излишними, но в других случаях имеет смысл указывать тип класса в имени переменной, и, на мой взгляд, контроль пользовательского интерфейса является одним из случаев, когда это имеет смысл.

1

Я предпочитаю венгерский язык, хотя он ведет к действительно длинным именам в пользовательском интерфейсе (из-за проблемы, о которой вы говорили в вопросе). Мое единственное предложение - быть последовательным во всей команде.

2

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

Ах, и, пожалуйста, не используйте как «пользователя» и «пользователя». Трудно читать, использовать, обслуживать и порт. Если две разные вещи имеют два разных значения, то венгерская нотация является лучшим вариантом, чем кодирование этой части информации, переворачивая символы между прописными или строчными буквами.

Я не знаю, кто изобрел чувствительность к регистру в языках программирования, но он наносил больше урона, чем кто мог себе представить в то время. Я ненавижу получать ошибки компиляции, потому что я напечатал «ID» вместо «Id» или «UsbDrive», когда он должен был «USBDrive».

+1

Я думаю, что чувствительность к регистру была не столько изобретена, сколько просто сделана по умолчанию, так как она вычислительно дешевле (по крайней мере, в системе ASCII). У меня сложилось впечатление, что более поздние и более высокоуровневые языки с большей вероятностью не учитывают регистр для идентификаторов. – cheduardo

+0

Да, это легко сравнить, если персонажи ровно равны. Даже не заставляйте меня начинать с исходного кода юникода. Это сука, чтобы читать, и я даже не знаю, как набирать большинство персонажей. –

+0

Ну, это не ТОТКО верно, возможно, что текстовое поле будет изменено на combobox и человека, чтобы забыть или не захотеть изменить имя элемента управления. Создание txtWhat очень вводит в заблуждение. – VoronoiPotato

1

Используйте все строчные буквы и символы подчеркивания, и проблема с корпусом исчезнет. SomeIdiotSomewhereDecidedThisWasAGoodWayToDoThingsAndIfIFindHimIWillKillHim.

+0

Я бы как-то согласился, но три года кодирования где-то, в котором заданы переменные variableName и TypeName, изменило мое мнение. – CJBrew