ASP.NET控件的命名准则是什么?

Chr*_*lid 19 asp.net coding-style naming-conventions

我们正在制定我们希望在开发团队中使用的设计指南,并在今天就如何命名ASP.NET控件进行讨论.我在谈论我们的好朋友Label,TextBox,Button等.

我们提出了以下三种投票方式:(示例是输入/显示FirstName的TextBox)

  1. 将控件类型作为后缀添加到控件ID:[FirstName _TextBox]或[FirstName _tbx]
  2. 将控件类型添加为控件ID [tbxFirstName]的前缀
  3. 将控件的ID设置为FirstName和名称相关字段(如文本框或验证器的标签),如选项2 [lblTextBox]中所示.

我们最终决定使用选项2.它不像选项1那么冗长,我喜欢它指定控件名称之前的控件.

我的问题是微软是否已经发布了这些前缀的指南,或者如果您对我们的决定有任何意见.

小智 29

将Studio添加到页面时Visual Studio添加"TextBox1"的原因是因为Microsoft无法知道您打算如何使用它.将其命名为"Control1"会让人感到困惑,因为它可能是任意数量的控件.

Microsoft一般为OO命名约定提供指导,但不是专门用于命名UI控件.由于UI控件最终是代码中使用的变量,因此它们应遵循与任何其他变量相同的约定 - 没有匈牙利语符号前缀.

主要原因是......

  • 控件类型可能会从文本框更改为列表框,然后必须修复所有相关代码(前面提到)
  • 您的代码应该更关注控件的内容,而不是它控制的类型.当您关心控件的类型时,您开始依赖于某些功能并且您打破了封装 - 您应该能够轻松地交换控件而无需更改太多或任何代码.(基本OOP原则)
  • 为标准控件提供前缀相当容易,但每天都在开发新的控件.您可以创建自己的WebUserControl,也可以购买一组第三方控件.您将如何确定用于自定义控件的前缀?您的代码应该关注其中包含的信息,而不是关注控件的类型.

例子

  • txtFirstName => firstName或FirstName
  • txtState =>州或州
  • cboState => state或State(更改控件类型的主要示例如何关于lstState或rdoState - 它们应该都具有相同的名称,因为您的代码不关心控件的类型,而是用户选择的状态)
  • ctlBilling => billingAddress或BillingAddress(自定义控件 - 使用匈牙利表示法控制甚至不是很明显,但是有一个有意义的名称我开始理解其中包含的信息.即billingAddress.Street,billingAddress.FullAddress等)


Web*_*ude 22

不确定微软的官方标准,但这是我在整个开发过程中所做的.

我通常在控件的名称前面缩写控件类型.我保留缩写小写和控件名称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
Run Code Online (Sandbox Code Playgroud)

  • 我这样做的原因是intellisense将类似控件组合在一起,所以当你寻找正确的标签时,所有标签都在一起.我添加了所有用户控件都是前缀uc所以我可以清楚地看到所有这些控件. (2认同)

Mar*_*ade 5

我发现大多数时候我关心控件的信息类型而不是当前用于捕获数据的控件类型,所以我更喜欢控件类型之前的信息类型,所以我可以在IDE中的排序列表:

  • AgeRangeDropDownList
  • AgreedToTermsCheckBox
  • FirstNameTextBox
  • LastNameTextBox

VS:

  • chkAgreedToTerms
  • ddlAgeRange
  • txtFirstName
  • txtLastName

  • 该方法更适合于读取/维护代码,而不是仅仅在编写代码时. (5认同)
  • +1为了便于阅读.您将服务器控件视为实际对象而不是二等公民 (4认同)