ASP.NET控件的命名准则是什么?
我们正在制定我们希望在开发团队中使用的设计准则,今天我们就ASP.NET控件的命名进行了讨论。我说的是我们的好友标签、文本框、按钮等 我们对以下三种可能性进行了投票:(示例是输入/显示名字的文本框)ASP.NET控件的命名准则是什么?,asp.net,naming-conventions,coding-style,Asp.net,Naming Conventions,Coding Style,我们正在制定我们希望在开发团队中使用的设计准则,今天我们就ASP.NET控件的命名进行了讨论。我说的是我们的好友标签、文本框、按钮等 我们对以下三种可能性进行了投票:(示例是输入/显示名字的文本框) 将控件类型作为后缀添加到控件ID:[FirstName\uUTextBox]或[FirstName\uUtbx] 将控件类型作为前缀添加到控件ID[tbxFirstName] 将控件的ID设置为FirstName和与名称相关的字段(如文本框或验证器的标签),如选项2[lblTextBox]所示 我们
\uU
TextBox]或[FirstName\uU
tbx]我的问题是,微软是否发布了关于这些前缀的任何指导方针,或者您是否对我们的决定有任何意见。我不确定是否有任何指导方针,我怀疑有,但我也总是使用数字2 这些实际上只是基于您的偏好,但是是的,所描述的选项2不太详细,甚至在显示其名称之前就向您指示控件的类型。我们也使用数字2,但是我不完全相信这是一个好方法。这是一种来自“bad”类型的匈牙利符号,意思是前缀表示类型(语法),而不是目的(语义)。问题是,以文本框开头的内容以后可能会变成下拉列表,然后变成RadioButtonGroup,每次都必须重命名该控件。几乎所有人都使用匈牙利风格的前缀(选项2)。
语义命名不太有用,因为“Firstname”实际上是texbox.Text值,而不是textbox本身。我选择选项1的两个原因:
说到这里,我正在考虑更改为FirstNameCtrl,原因是csgero指出了更改控件类型的问题。那么,为什么还要麻烦使用任何后缀或前缀,以减少/消除与asp/win表单属性冲突的可能性呢。不确定Microsoft官方标准,但这是我在整个开发生涯中所做的 我通常在控件名称前面缩写控件类型。 我保留缩写小写和控件的名称CamelCase 例如,用户名的文本框变为tbUserName 以下是我使用的标准缩略语列表:
Abbr - Control
btn - Button
cb - CheckBox
cbl - CheckBoxList
dd - DropDownList
gv - GridView
hl - Hyperlink
img - Image
ib - ImageButton
lbl - Label
lbtn - LinkButton
lb - ListBox
lit - Literal
pnl - Panel
ph - PlaceHolder
rb - RadioButton
rbl - RadioButtonList
txt - Textbox
我不确定有关ASP.NET的指导原则,但在Microsoft的《框架设计指导原则》一书中,有几个关于类成员命名的最佳实践指导原则。由于ASP.NET控件在大多数情况下导致了适当类型的受保护字段,所以我认为这些命名准则也适用于ASP.NET控件。事实上,代码分析并没有区分控件引用字段和其他字段 这些指导原则建议使用暗示逻辑用途的命名方案,而不是类型描述变量。这有几个原因。前缀is向开发人员暗示了一种类型,该类型可能由于以后的更改而不正确。它在代码维护方面增加了一个额外的步骤。如果将按钮控件更改为LinkButton控件,则还需要更改名称以更正前缀
出于这个原因,我会调用控件FirstNameEdit等 我倾向于使用控件类型作为前缀,之后使用控件的名称,但我总是使用大小写,因此在您的示例中,对于可能具有的不同类型的控件
- TXB名字
- DdFirstName
- ChbFirstName
- TxbFName
- TxbClientNo
- TxbNoOfCpn
但最终归结到个人偏好,我也一直在努力解决这个问题。我以前用“匈牙利式前缀” 现在我采用另一种方法,我尝试将控件视为类中的私有字段。我不会用它们的类型预先修改我的私有字段的后缀,所以为什么我要对文本框这样做呢 那么,过去的情况是:
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”控件是文本框还是其他什么,我只想要它的值
如果您谈论的是控件还是其他字段/变量还不够清楚,我认为您应该重新考虑该字段/变量的名称或类的函数(这意味着它可能有点太大了?).如果您从代码维护的角度来看,在您两年前编写代码之后,什么是最好的注释。尽管我们试图确保表单上没有太多字段,但我们都知道有时会发生这种情况。如果我们使用匈牙利类型表示法,在控件类型前面加上前缀,我认为会更容易看到该值的来源,而不必在变量名不明显的情况下找出它。如果您正在使用任何类型的重构工具,那么更改控件的名称将自动更改代码,从而减少更改控件的争论。我发现大多数时候我关心的是控件用于哪种类型的信息,而不是当前用于捕获该数据的控件类型,因此,我更喜欢控件类型之前的信息类型,因此我可以在IDE中的排序列表中找到它:
- AgrangeDropDownList
- 已同意的Totermscheckbox
- 名字文本框
- LastNameTextBox
- 克卡格里德酒店
- Dlagerange
- txtFirstName
- txtLastName
- 我不知道
Abbreviation || ASP.NET Control