Как правильно задать идентификатор контрола

Сразу оговорюсь – в основном речь идет об идентификаторах контролов, используемых в ASP.NET WebFormsimage

Для себя я выработал достаточно четкие правила для идентификации контролов и я к ним очень привык, но достаточно часто на различных форумах встречаю совершенно неприемлемые, как то: TextBox1, ListView5, ConfirmPassword и т.п.

Префикс – сокращенное название типа контрола, но в большей степени выражающая его функциональные особенности
Например:

  • txtPassword – здесь префикс txt показывает, что это именно текстовый контрол, при чем не суть важно как он выльется в HTML (textarea, input[type=text], input[type=password] и т.п.) – у него точно есть свойство Text
  • btnDelete – это кнопка, есть свойства Text, OnClientClick
  • listSections – этот контрол выводит список чего-либо и у него есть свойство DataSource и метод DataBind() (хотя он как бы у всех есть Улыбка)
  • placeUserInfo – панель которую можно скрыть, хотя именно для панелей я иногда писал префикс panel

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

Префикс

Контролы

Пример ID

txt

TextBox
HtmlInputText
HtmlInputPassword
HtmlTextArea

txtEmail
txtCity
txtFirstName

btn

Button
ImageButton
LinkButton
HtmlInputButton
HtmlInputImage

btnAdd
btnUpdate
btnDelete

place, panel

PlaceHolder
Panel

placeComment
panelTreeContainer

link

HyperLink
HtmlAnchor
HtmlLink

linkProfilePage

ddl

DropDownList
HtmlSelect
ddlCountries

chb

CheckBox
HtmlInputCheckBox
chbAgree

chl, chblist

CheckBoxList chlSections

hid

HiddenField
HtmlInputHidden
hidSomeData

lit, lbl

Literal
Label
litFirstName
lblCaption

radio

RadioButton
HtmlInputRadioButton
radioSex

rlist

RadioButtonList rlistSize

view

View viewForm, viewError

mv

MultiView mvRegisterForm

file

FileUpload
HtmlInputFile
fileAvatar

img

Image, HtmlImage imgAvatar

list

ListBox
ListView
Repeater
GridView
DataList
Да все датабиндеры
listSections
listProducts
listNews

tbl

Table
HtmlTable
tblLayout

ds

ObjectDataSource
XmlDataSource
SqlDataSource
SiteMapDataSource
EntityDataSource
LinqDataSource
dsSections

pager

DataPager pagerProducts

valid

CompareValidator
CustomValidator
RangeValidator
RegularExpressionValidator
RequiredFieldValidator
validEmail

svalid

ValidationSummary svalidAllErrors

tree

TreeView treePages

Я выработал эти правила для себя уже давно и пока ни разу не разочаровался в них
Естественно, что не всегда их можно придерживаться, к примеру, иногда я допускал использование префикса grid для контролов похожих на GridView, а иногда вместо ds использовал префикс source

Использование единой конвенции префиксов для контролов – облегчает понимание кода (что важно при командной разработке) и поддержку кода в будущем

Не утверждаю, что приведенные примеры в таблице идеальны, но что-то подобное каждый должен выработать для себя обязательно

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

Рекомендую к ознакомлению:

P.S.: А вот в ASP.NET MVC подобные приколы не нужны Пламенный привет

P.P.S.: Изначально черновик статьи предназначался только для одного человека, но подумал что может кому еще пригодиться и возможно меня в чем-то поправят, потому и решил оформить в небольшой пост
Писать статьи красиво не умею, потому прошу не судить строго

Комментариев нет:

Отправить комментарий

Можете оставить свой комментарий