Сразу оговорюсь – в основном речь идет об идентификаторах контролов, используемых в ASP.NET WebForms
Для себя я выработал достаточно четкие правила для идентификации контролов и я к ним очень привык, но достаточно часто на различных форумах встречаю совершенно неприемлемые, как то: 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 |
txtEmail txtCity txtFirstName |
btn |
Button |
btnAdd btnUpdate btnDelete |
place, panel |
PlaceHolder |
placeComment panelTreeContainer |
link |
HyperLink |
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, то ровным счетом ничего не изменится, т.к. придется гадать – что же в этом текстбоксе лежит смотря как он используется или в саму разметку, а код необходимо писать так, чтобы совершенно новый человек в команде спокойно мог прочесть код метода и сказать что он делает
Сила кода в правильных именах
Рекомендую к ознакомлению:
- Главу 11 книги “Code Complete” Стива Макконнелла
- MSDN: Guidelines for Names
P.S.: А вот в ASP.NET MVC подобные приколы не нужны
P.P.S.: Изначально черновик статьи предназначался только для одного человека, но подумал что может кому еще пригодиться и возможно меня в чем-то поправят, потому и решил оформить в небольшой пост
Писать статьи красиво не умею, потому прошу не судить строго
Комментариев нет:
Отправить комментарий
Можете оставить свой комментарий