我们想出了我们投票的以下三种可能性:(示例是一个TextBox输入/显示FirstName)
>将控件类型作为后缀添加到控件ID:[FirstName_TextBox]或[FirstName_tbx]
>将控件类型作为前缀添加到控件ID [tbxFirstName]
>将选项ID设置为FirstName和名称相关字段(如文本框或验证器的标签),如选项2 [lblTextBox]中所示。
我们最终决定使用选项2.它不像选项1那样冗长,我喜欢它指定在控件名称之前的控件。
我的问题是微软是否已经发布了这些前缀的任何指南,或者如果您对我们的决定有任何意见。
解决方法
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 =>状态或状态(改变控制类型的主要例子,关于lstState或rdoState – 他们应该都具有相同的名称,因为你的代码不关心控件的类型,而不是用户选择的状态)> ctlBilling => billingAddress或BillingAddress(自定义控件 – 使用匈牙利语表示法,控件甚至不是很明显,但是使用一个有意义的名字,我开始理解其中包含的信息,即billingAddress.Street,billingAddress.FullAddress等)