Какое соглашение об именах вы используете и почему?
Мне нравится использовать employeeNameTextBox, потому что:
Примечание. Я использую полное имя, а не аббревиатуру (например, «tb»), потому что это соответствует соглашению об именах MS, в котором говорится, что следует избегать использования сокращений.





Единственная причина использовать сначала тип элемента управления в имени (textBoxEmployeeName) - это упрощение группировки с помощью Intellisense (все элементы управления текстовыми полями будут отображаться вместе). Кроме того, в использовании этого способа действительно нет никакой пользы. Я считаю, что второй способ (employeeNameTextBox) более читабелен, и лично я предпочитаю его, но многие люди по-прежнему будут сначала использовать тип элемента управления, поскольку так делалось долгое время.
Я бы выбрал [controlType] [DomainTerm], который в данном случае textBoxEmployeeName. Причина в том, что при кодировании кода C# вы больше заботитесь об элементах управления пользовательского интерфейса, чем о конкретных терминах домена. Кодирование на стороне пользовательского интерфейса (представление) нам нужно быстрее идентифицировать / распознавать тип элемента управления, что немного важнее, чем домен конкретное имя на стороне просмотра, и поскольку мы читаем из 'Слева направо', это соглашение об именах актуально. Обычно я использую txtEmployeeName или cmpEmployeeType, но в соответствии с рекомендациями MS предпочтительнее использовать textBox вместо txt.
это просто венгерская нотация, которую люди совершенно отвергли.
Почему не EmployeeName? Серьезно, как тип элемента управления как часть имени, когда он уже предоставлен вашей IDE, помогает в доставке простого в обслуживании кода? Рассмотрим Правила Оттенгера для именования переменных и классов
K
как бы вы назвали переменную, содержащую значение, и как бы вы назвали свойство, чтобы установить / получить это значение?
Само текстовое поле не является именем сотрудника. В нем содержится значение.
@ w4g3n3r, а что, если тебе нужно сделать то, что я только что спросил?
Я бы назвал переменную _employeeName. Текстовое поле передает только входное значение бизнес-объекту, который на самом деле содержит и сохраняет значение, вероятно, Employee со свойством Name.
Я стараюсь не называть свои элементы управления именами бизнес-сущностей или данных. Вызов текстового поля «Имя сотрудника» вводит в заблуждение. Венгерская нотация по-прежнему имеет значение в мире компонентов пользовательского интерфейса, и я предпочитаю помечать имена своих элементов управления: txtEmployeeName, lblEmployeeName, cboEmployeeName, ddlEmployeeName, btnEmployeeName и т. д.
Я (почти) всегда использую [controltype] [описательное имя]. Я хочу сразу знать, с каким типом контроля я имею дело, когда смотрю на код, и если я НЕ помню имя, intellisense может мне помочь.
Просто использование описательного имени (EmplyeeName) для меня не работает. Какой контроль? Это метка, текстовое поле или поле со списком? Или струна? Или файл? Достаточно важно, чтобы тип элемента управления или переменной всегда был его частью.
Действительно ли имеет значение, какой это контроль? Разве вы не можете так же быстро определить, наведя курсор мыши на переменные, или начав пробовать использовать его, чтобы определить, какой это тип? У нас есть проверка ошибок времени компиляции и intellisense, почему бы не использовать его?
Если бы все, что у меня было, определенно была Visual Studio. Но я, как правило, получаю некоторые запросы о том, почему определенный фрагмент кода не работает, и наличие префикса пригодится для отладки подобных проблем без использования передней страницы, а также для проверки.
Но разве суффикс не будет работать так же хорошо, как префикс для этой (конкретной) цели?
Но в английском языке на первое место ставятся прилагательные. Рассмотрим UserName, XmlParser, StreamWriter, NodeFactory. Обратное было бы совсем другое, NameUser, ParserXml, WriterStream, FactoryNode. Установка типа управления первым нарушает эту почти конвенцию .Net и английские обычаи.
это паскаль?
Обычно я стараюсь, чтобы тип элемента был коротким, а за ним следовала отличительная метка. Я считаю, что он быстро сообщает тип и назначение элемента:
txtEmployeeName;
lblEmployeeName;
«Венгерская нотация» не приветствуется в наши дни. См. Причины на en.wikipedia.org/wiki/Hungarian_notation
Аббревиатура не годится по нескольким причинам. Во-первых, текстовое поле сокращается как txt или tb, как насчет флажка и поля со списком? Во-вторых, что вы делаете с настраиваемым элементом управления TextDisplayer? Вы бы назвали это td или не стали бы сокращать? Согласованность важна с соглашениями об именах.
Дилан, я регулярно использую аббревиатуры и почти не испытываю никаких проблем. Конечно, если вы работаете в большой команде, вам понадобятся соглашения, но я редко, если вообще когда-либо, сталкиваюсь с какими-либо проблемами в результате моего соглашения об именах. TextBox = txt, Checkbox = chk, combobox = cmb и т. д.
Венгерская нотация не приветствуется только тогда, когда ею злоупотребляют. Проблема сегодня в том, что им злоупотребляют больше, чем используют должным образом. Эта статья может быть поучительной: joelonsoftware.com/articles/Wrong.html Вызов TextBox «EmployeeName» слишком расплывчатый и вводящий в заблуждение, и создает код, который трудно понять, когда он просто читается (возможно, даже на бумаге ... нет никакой гарантии IDE.) Эффективное использование венгерской системы обозначений уменьшает путаницу, а если вы уменьшите путаницу, этого будет достаточно.
Я, например, использовал венгерскую нотацию, когда не знал, как правильно кодировать, это выглядело круто и тому подобное. Увидев на практике, что это слишком запутанно и служит только для группировки в intellisense, я считаю, что это вещь n00b или что-то унаследованное старыми разработчиками VB.
Я не рекомендую венгерские обозначения в какой-либо форме. textBoxEmployeeName - это форма венгерской нотации. Поэтому я поддерживаю использование employeeNameTextBox.
Лично я даже не использую слово TextBox, потому что это не то, что важно для переменной. Важны «Сотрудник» и «Имя». Добавление слова TextBox не только привязывает вас к определенному типу, но и значительно усложняет изменение этого типа, потому что вам нужно изменить имя, чтобы нормализовать ваш код и сделать его правильным. Скажем, по какой-то причине вы начали это как TextBox, но позже вы получили требование изменить это на DropDownList или какой-либо другой тип, теперь вам нужно обновить весь свой код и JavaScript, чтобы он говорил DropDownList вместо TextBox.
Гораздо проще забыть о попытках ввести имена переменных и просто дать им имена. У вас есть intellisense и проверка ошибок времени компиляции по какой-то причине, почему бы не использовать ее.
Вопрос не в венгерской или паскальской нотации. Речь идет о том, нужен ли нам TextBox (ControlName) перед именем переменной или нет.
Я согласен. [type] [name] или [name] [type] - обе формы венгерского языка - и оба в основном бесполезны.
Когда я читал это, статья, на которую ссылается статья, упомянутая в вопросе (а именно, Имена ресурсов), действительно использует тип элемента управления в конце, в FileMenu (и ArgumentException, хотя это не элемент управления).
Мое личное мнение состоит в том, что это также более читабельно, поскольку это текстовое поле имени сотрудника и, следовательно, его следует называть employeeNameTextBox, точно так же, как слова «Меню файла» читаются в этом порядке. (Хотя для краткости я заменяю «Edit» на «TextBox» - я, вероятно, должен избавиться от этой привычки использовать имена элементов управления в соответствии с именем среды для них.)
Это более разумно, поскольку загружает более уникальную деталь. Приставка бородавок обычно плохая идея.
Имена ваших переменных очень важны. Кажется, что соглашениям о толстых клиентских представлениях не о чем беспокоиться. Вот мои мысли:
Никогда не ставьте на ваш взгляд методы получения и установки фактических бизнес-ценностей. Не делайте этого:
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) не то же самое, что текстовое поле. Без какого-либо описательного суффикса у вас не будет хорошего способа дифференцировать.
Вы, кажется, имеете в виду, что вместо того, чтобы говорить EmployeeNameTextBox, вы используете EmployeeNamePrompt. Я думаю, мне это больше нравится просто потому, что способ ввода EmployeeName май изменится в будущем, и поэтому вам не нужно проводить рефакторинг.
# 1/2 звучит как говорящий фон Java. В C# (например) ожидается, что свойство будет иметь код, который запускается при использовании get или set - в противном случае это было бы поле public Name EmployeeName. Принуждение людей использовать SetEmployeeName повсюду приведет их в бешенство. # 3 VB6 (и 5, и 4) не используют позднюю привязку, вы получите ошибку времени компиляции. Вы думали о VBScript или, возможно, о VBA (где компиляция и запуск почти синонимы)? # 4 Я согласен с этим!
Я использовал как txtEmployeeName, так и employeeNameTextbox. Как и многие из указанных сообщений, это полезно для группировки. Один группирует по типам элементов управления (txtEmployeeName, txtManagerName), а другой может группировать различные связанные элементы управления вместе (employeeNameTextbox, employeePhoneTextbox, managerNameTextBox, managerPhoneTextbox). Во многих случаях я считаю, что последнее более полезно при кодировании.
ДОЛЖЕН ПРОЧИТАТЬСЯ Рекомендации XAML, выпущенный Хайме:
Также читайте дальше здесь
Я категорически не согласен с предложением Хайме о том, что наиболее логичные элементы управления должны быть названы в XAML. Если ваше приложение WPF ссылается на более чем крошечную горстку элементов управления по имени, вы делаете что-то серьезно неправильно. Если ваши файлы XAML настолько велики, что вам нужны именованные элементы, чтобы найти свое место, вам следует лучше организовать их. В любом случае, необходимость дать x: Name более чем нескольким элементам свидетельствует о плохой практике кодирования.
Вы должны делать то, что делает ваш код читабельным и самодокументированным. Следование жестким правилам всегда является ошибкой, потому что они почти никогда не охватывают все аспекты того, что необходимо сделать. Нет ничего плохого в наличии руководящих указаний (таких как отказ от использования венгерской нотации), но более важно, чтобы вы были последовательны и ясны со своим соглашением об именах, каким бы оно ни было, чем следовали некоторым правилам, найденным в Интернете.
Идеи:
Избегайте кодировок / сокращений.
Название должно отличаться от похожие имена в той же области. Сделайте большую часть уникальной левая часть. Я подозреваю, что у тебя есть несколько текстовых полей, но только одно имя сотрудника.
Избегайте ненужного контекста. Все имена на этой странице о сотрудниках? Это страница "сотрудника"? потом EmployeeName является избыточным. NameBox или NameControl должно быть много.
Избегайте ненужного контекста: есть ли у вас имена, которые не являются элементами управления? Если так, "Коробка" или "Контроль" полезны, в остальном не так уж и много.
Раскрытие информации: я «ottinger» от «правил именования ottingers», которые также превратились в главу 2 «Чистого кода». См. Краткую форму на http://agileinaflash.blogspot.com/2009/02/meaningful-names.html
Предлагаю третий вариант: uiEmployeName. Причины:
Ответ, относящийся к WPF: вообще без имени.
Почему? Потому что, если вы разрабатываете с использованием WPF, вы не должны называть свои элементы управления. Если да, то вы что-то делаете не так.
WinForms требовал, чтобы элементы управления были названы, потому что его привязка данных была очень слабой. WPF решает все это: сам элемент управления может указывать свои данные и поведение, поэтому нет необходимости называть его.
В чем смысл этого ответа? 1) это вопрос winforms 2) иногда вам все равно нужно указывать имена в wpf, например при привязке к свойству элемента представления.
Я думаю, что лучше следовать Microsoft Соглашение об именах объектов для именования ваших элементов управления как на C#, так и на Visual Basic.
В VB мне нравится использовать [ControlName] _ [ControlType]. Я не могу вспомнить, как я начал это делать, но полагаю, это потому, что это похоже на логический порядок. Это также немного упрощает кодирование, поскольку предложения кода сгруппированы по описанию элемента управления, а не по типу элемента управления.
Я называю элементы управления таким же образом в C#, за исключением того, что я следую предпочтениям C# для camelCase: [controlName] _ [controlType].
Я также склонен использовать собственные сокращения для типов элементов управления, хотя они и не являются расплывчатыми.
Примеры:
VB:Save_Btn и NewFile_MItem (пункт меню)
C#:save_btn и newFile_mItem
У меня это работает, но, конечно, у каждого программиста есть свой стиль.
Возможный дубликат Лучшие практики для соглашений об именах графического интерфейса C#?