Каковы правила именования для элементов управления ASP.NET? - PullRequest
19 голосов
/ 08 октября 2008

Мы находимся в процессе разработки рекомендаций по проектированию, которые мы хотели бы использовать в нашей команде разработчиков, и сегодня мы обсудили, как следует называть элементы управления ASP.NET. Я говорю о наших хороших друзьях Label, TextBox, Button и т. Д.

Мы предложили следующие три возможности, за которые проголосовали: (Например, TextBox для ввода / отображения FirstName)

  1. Добавьте тип элемента управления в качестве постфикса к идентификатору элемента управления: [FirstName _ TextBox] или [FirstName _ tbx]
  2. Добавить тип элемента управления в качестве префикса к идентификатору элемента управления [tbxFirstName]
  3. Установите идентификатор элемента управления для FirstName и полей, связанных с именем (например, метка для текстового поля или валидатор), как в опции 2 [lblTextBox].

В итоге мы решили использовать вариант 2. Он не такой подробный, как вариант 1, и мне нравится, что он указывает, какой элемент управления находится перед именем элемента управления.

Мой вопрос заключается в том, выпустила ли Microsoft какие-либо рекомендации для этих префиксов и если у вас есть какие-либо комментарии по поводу нашего решения.

Ответы [ 18 ]

0 голосов
/ 08 октября 2008

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

0 голосов
/ 08 октября 2008

Я тоже боролся с этой проблемой. Я использовал «префикс венгерского стиля».

Теперь я использую другой подход, я пытаюсь видеть элементы управления как частные поля из моего класса. Я не делаю префикса своих личных полей с их типом, так зачем мне это делать с TextBox?

Итак, что было:

var newCustomer = new Customer();
newCustomer.Name = txtName.Value;
newCustomer.Address = txtAddress.Value;
newCustomer.City = txtCity.Value;
newCustomer.HasEnoughMoney = cbHasMoney.Selected;

становится:

var newCustomer = new Customer();
newCustomer.Name = name.Value;
newCustomer.Address = address.Value;
newCustomer.City = city.Value;
newCustomer.HasEnoughMoney = hasMoney.Selected;

Если честно, мне было наплевать, является ли элемент управления "name" текстовым полем или что-то еще, я просто хочу, чтобы он имел значение.

И если неясно, говорите ли вы о вашем контроле или о другом поле / переменной, я думаю, вам следует либо пересмотреть имя этого поля / переменной или функцию вашего класса (то есть большой?).

0 голосов
/ 08 октября 2008

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

  • TxbFirstName
  • DdFirstName
  • ChbFirstName

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

  • TxbFName
  • TxbClientNo
  • TxbNoOfCpn

Но, в конечном счете, все зависит от личных предпочтений

0 голосов
/ 08 октября 2008

Почти все используют префиксы в венгерском стиле (вариант 2). Семантическое именование менее полезно, поскольку «Имя» на самом деле является значением texbox.Text, а не самим текстовым полем.

0 голосов
/ 08 октября 2008

Мы также используем номер 2, однако я не совсем уверен, что это хороший подход. Это венгерская запись от «плохого» вида, означающая, что префиксы обозначают тип (синтаксис), а не цель (семантика). Проблема в том, что то, что начинается с TextBox, может позже стать DropDown, а затем RadioButtonGroup, и вам придется каждый раз переименовывать элемент управления.

0 голосов
/ 08 октября 2008

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

0 голосов
/ 14 ноября 2015

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

Однако время использования брифов для разработки давно прошло, и IDE показывает информацию за секунду

Тогда вы наследуете код VB.NET, и он не учитывает регистр, так что вы делаете?

lblFirstName, txtFirstName Один - это ярлык, другой - текстовое поле

Итак, как вы называете их без учета регистра и на самом деле знаете, что они есть?

uxFirstName & uxFirstName не работает

Единственный ответ, который я нашел, - использовать венгерскую нотацию, да, меня вырвало у меня во рту. Затем снова его vb.net, и он должен быть чувствителен к регистру, поскольку .net и все компилируется в IL.

0 голосов
/ 08 октября 2008

Не совсем уверен в каких-либо рекомендациях, я подозреваю, что они есть, но я всегда использую номер 2!

...