我们正在制定我们希望在开发团队中使用的设计指南,并在今天就如何命名ASP.NET控件进行讨论.我在谈论我们的好朋友Label,TextBox,Button等.
我们提出了以下三种投票方式:(示例是输入/显示FirstName的TextBox)
将控件类型作为后缀添加到控件ID:[FirstName _
TextBox]或[FirstName _
tbx]
将控件类型添加为控件ID [tbxFirstName]的前缀
将控件的ID设置为FirstName和名称相关字段(如文本框或验证器的标签),如选项2 [lblTextBox]中所示.
我们最终决定使用选项2.它不像选项1那么冗长,我喜欢它指定控件名称之前的控件.
我的问题是微软是否已经发布了这些前缀的指南,或者如果您对我们的决定有任何意见.
将Studio添加到页面时Visual Studio添加"TextBox1"的原因是因为Microsoft无法知道您打算如何使用它.将其命名为"Control1"会让人感到困惑,因为它可能是任意数量的控件.
Microsoft一般为OO命名约定提供指导,但不是专门用于命名UI控件.由于UI控件最终是代码中使用的变量,因此它们应遵循与任何其他变量相同的约定 - 没有匈牙利语符号前缀.
msdn.microsoft.com/en-us/library/xzf533w0(vs.71)
msdn.microsoft.com/en-us/library/ms229002(VS.80)
主要原因是......
控件类型可能会从文本框更改为列表框,然后必须修复所有相关代码(前面提到)
您的代码应该更关注控件的内容,而不是它控制的类型.当您关心控件的类型时,您开始依赖于某些功能并且您打破了封装 - 您应该能够轻松地交换控件而无需更改太多或任何代码.(基本OOP原则)
为标准控件提供前缀相当容易,但每天都在开发新的控件.您可以创建自己的WebUserControl,也可以购买一组第三方控件.您将如何确定用于自定义控件的前缀?您的代码应该关注其中包含的信息,而不是关注控件的类型.
例子
txtFirstName => firstName或FirstName
txtState =>州或州
cboState => state或State(更改控件类型的主要示例如何关于lstState或rdoState - 它们应该都具有相同的名称,因为您的代码不关心控件的类型,而是用户选择的状态)
ctlBilling => billingAddress或BillingAddress(自定义控件 - 使用匈牙利表示法控制甚至不是很明显,但是有一个有意义的名称我开始理解其中包含的信息.即billingAddress.Street,billingAddress.FullAddress等)
不确定微软的官方标准,但这是我在整个开发过程中所做的.
我通常在控件的名称前面缩写控件类型.我保留缩写小写和控件名称CamelCase.
例如,用户名的texbox变为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
我发现大多数时候我关心控件的信息类型而不是当前用于捕获数据的控件类型,所以我更喜欢控件类型之前的信息类型,所以我可以在IDE中的排序列表:
AgeRangeDropDownList
AgreedToTermsCheckBox
FirstNameTextBox
LastNameTextBox
VS:
chkAgreedToTerms
ddlAgeRange
txtFirstName
txtLastName