TextBoxEmployeeName vs employeeNameTextBox

Какое соглашение об именах вы используете и почему?

Мне нравится использовать employeeNameTextBox, потому что:

  • Это кажется более естественным с точки зрения английского языка.
  • Мне легче искать с Intellisense.
  • Соглашение похоже на соглашение, используемое для событий (MouseClickEvent, MouseClickEventHandler) и свойства зависимостей (VisiblityProperty).

Примечание. Я использую полное имя, а не аббревиатуру (например, "tb" ), потому что это соответствует соглашениям об именах MS, которые говорят, чтобы избежать использования сокращений.

http://msdn.microsoft.com/en-us/library/ms229045.aspx

Ответ 1

Единственная причина использовать тип управления в имени first (textBoxEmployeeName) для упрощения группировки с Intellisense (все элементы управления текстовыми полями будут отображаться вместе). Помимо этого, нет никакой пользы от использования этого способа. Я нахожу второй способ (employeeNameTextBox) более читабельным и предпочитаю этот способ лично, но многие люди по-прежнему будут иметь тип управления первым, так как так оно и было сделано в течение длительного времени.

Ответ 2

Я (почти) всегда использую [controltype] [описательное имя]. Я хочу знать, с каким типом управления я сталкиваюсь, когда смотрю на код, и если я НЕ помню имя, intellisense может мне помочь.

Просто использование описательного имени (EmplyeeName) не работает для меня. Какой тип контроля? Является ли это ярлыком, текстовым полем или комбинированным полем? Или строка? Или файл? Это достаточно важно, что тип управления или переменной всегда является его частью.

Ответ 3

Именование ваших переменных так важно. Контрастным представлениям, похоже, соответствует короткий конец палки. Вот мои мысли:

  • Никогда не ставьте геттеры и сеттеры для фактических бизнес-значений на ваш взгляд. Не делайте этого:

    public Name EmployeeName { get; set; }
    
  • Чтобы получить или установить EmployeeName, ваш код состояния должен явно вызвать метод. Сделайте это так, потому что он прогнозирует, что состояние не сохраняется в представлении, но может быть получено или перенесено в представление:

    public void SetEmployeeName(Name employeeName);
    public Name GetEmployeeName();
    
  • Венгерская нотация глупа. Это было полезно в языках <= VB6, поскольку они использовали позднюю привязку переменных типов. Вы должны были защитить себя, потому что несоответствия типов были ошибками времени выполнения, а не временем компиляции. Используйте только txtEmployeeName, если вы также будете использовать strEmployeeName и intEmployeeNumber.

  • Если префикс имени шаблона не согласуется с вашим соглашением об именах, не делайте этого для типа управления (который представляет шаблон). Если вы не создали бы commandNameFormatting (вместо nameFormattingComamnd), не создавайте textBoxEmployeeName.

  • Вам, вероятно, понадобится какой-то суффикс, так как EmployeeName недостаточно описывает назначение переменной. Цель текстового поля EmployeeName - получение ввода. Вы можете назвать его EmployeeNameTextBox, если это вам удобно, но лучше назвать его EmployeNameInput. У этого есть дополнительный бонус, если у вас есть метка, ясно, что EmployeeNamePrompt (или EmployeeNameLabel) не совпадает с текстовым полем. Без какого-либо описательного суффикса у вас нет хорошего способа дифференцироваться.

Ответ 4

Обычно я стараюсь держать тип элемента коротким, за ним следует отличительная метка. Я обнаружил, что он быстро сообщает тип и назначение элемента:

txtEmployeeName;
lblEmployeeName;

Ответ 5

Я предлагаю третий вариант: uiEmployeName. Причины:

  • Это не венгерский. Обе обозначения, которые вы упомянули, являются просто ароматами венгерского языка.
  • Если вы измените текстовое поле имени сотрудника на список, вам не нужно переименовывать переменные.
  • Все хорошо сгруппировано в intellisense без привлечения типа объекта.
  • Имя объекта близко следует его функции. Это объект, обращенный к пользователю, который получает имя сотрудника.

Ответ 7

Как я прочитал, статья, связанная в упомянутой в вопросе статье (а именно Имена ресурсов), использует элемент управления введите в конце FileMenuArgumentException, хотя это не элемент управления).

Мое личное мнение состоит в том, что это также более читаемо, так как это текстовое поле имени сотрудника и, следовательно, должно быть названо employeeNameTextBox, так же как и слова "Меню файла", считаются в этом порядке. (Хотя я заменяю "Редактировать" для "TextBox" для краткости и mdash, я должен, вероятно, использовать эту привычку для использования имен управляющих последовательно с именем среды для них.)

Ответ 9

WPF-специфический ответ: нет имени вообще.

Почему? Потому что, если вы разрабатываете WPF, вы не должны называть свои элементы управления. Если да, вы делаете что-то неправильно.

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

Ответ 10

Я бы пошел с [controlType] [DomainTerm], который в этом случае textBoxEmployeeName. Причина в том, что, кодируя код С# позади вас, вы больше заботитесь об элементах пользовательского интерфейса, а не о специфичных для домена условиях. UI (View) боковое кодирование нам нужно быстрее идентифицировать/распознавать тип управления, что немного важнее домена конкретное имя в стороне просмотра, и поскольку мы читаем " слева направо", это соглашение об именах имеет значение. Обычно я использую txtEmployeeName или cmpEmployeeType, но textBox вместо txt предпочтительнее в соответствии с рекомендациями MS.

Ответ 11

Я не рекомендую венгерскую нотацию в любой форме. textBoxEmployeeName - форма венгерской нотации. Поэтому я поддерживаю использование employeeNameTextBox.

Лично я даже не хочу использовать слово TextBox, потому что это не то, что важно для переменной. Важно, что "Сотрудник" и "Имя". Не только добавление слова TextBox блокирует вас к определенному типу, но и делает его намного сложнее изменить этот тип, потому что вам нужно изменить имя, чтобы нормализовать ваш код и сделать его правильным. Скажите почему-то, что вы начали это как TextBox, но позже вы получили требование изменить это на DropDownList или какой-либо другой тип, теперь вам нужно обновить весь свой код и JavaScript, чтобы заставить DropDownList вместо TextBox.

Намного легче забыть о том, как набирать имена переменных и просто называть их. У вас есть intellisense и проверка времени компиляции по какой-либо причине, почему бы не использовать ее.

Ответ 12

Я использовал оба txtEmployeeName и employeeNameTextbox. Как и многие указанные сообщения, это полезно для группировки. Одна группа по типам управления (txtEmployeeName, txtManagerName), а другая может группировать разные связанные элементы управления вместе (employeeNameTextbox, employeePhoneTextbox, managerNameTextBox, managerPhoneTextbox). Во многих случаях я считаю, что более поздняя версия более полезна при кодировании.

Ответ 13

Вы должны делать все, что делает ваш код читаемым и самодокументированным. Следуя жестким и быстрым правилам, это всегда ошибка, потому что они почти никогда не охватывают все аспекты того, что нужно сделать. Нет ничего плохого в том, что у вас есть рекомендации (например, не использовать венгерскую нотацию), но более важно, чтобы вы были единодушны и понятны в своем соглашении об именах, независимо от того, что это такое, чем следовать некоторым правилам, найденным в Интернете.

Ответ 14

Идеи:

  • Избегайте кодировок/сокращений.

  • Название должно выделяться из аналогичные имена в той же области. Сделайте уникальную большую часть левый часть. Я подозреваю, что у вас есть несколько текстовых полей, но только один имя сотрудника.

  • Избегайте ненужного контекста. Все ли имена на этой странице о сотрудниках? Это страница "сотрудник"? затем EmployeeName является избыточным. NameBox или NameControl должно быть много.

  • Избегайте ненужного контекста: у вас есть имена, которые не являются элементами управления? Если так, "Коробка" или "Контроль" полезна, в противном случае не так много.

Раскрытие информации: Я являюсь "ottinger" из "правил именования ottingers", который также стал главой 2 "Чистого кода". См. Краткую форму в http://agileinaflash.blogspot.com/2009/02/meaningful-names.html

Ответ 16

В VB мне действительно нравится идти с [ControlName] _ [ControlType]. Я не могу вспомнить, как я начал это делать, но я полагаю, что это похоже на логический порядок. Это также упрощает кодирование, потому что предложения кода сгруппированы по описанию управления, а не по типу управления.

Я называю управление таким же образом в С#, за исключением того, что я следую предпочтению С# для camelCase: [controlName] _ [controlType].

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

Примеры:

VB: Save_Btn и NewFile_MItem (пункт меню)

С#: Save_Btn и NewFile_MItem

Это работает для меня, но, конечно, у каждого программиста есть свой стиль.