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]所示 我们

我们正在制定我们希望在开发团队中使用的设计准则,今天我们就ASP.NET控件的命名进行了讨论。我说的是我们的好友标签、文本框、按钮等

我们对以下三种可能性进行了投票:(示例是输入/显示名字的文本框)

  • 将控件类型作为后缀添加到控件ID:[FirstName
    \uU
    TextBox]或[FirstName
    \uU
    tbx]
  • 将控件类型作为前缀添加到控件ID[tbxFirstName]
  • 将控件的ID设置为FirstName和与名称相关的字段(如文本框或验证器的标签),如选项2[lblTextBox]所示
  • 我们最终决定使用选项2。它不像选项1那样详细,我喜欢它在控件名称之前指定它是什么控件


    我的问题是,微软是否发布了关于这些前缀的任何指导方针,或者您是否对我们的决定有任何意见。

    我不确定是否有任何指导方针,我怀疑有,但我也总是使用数字2

    这些实际上只是基于您的偏好,但是是的,所描述的选项2不太详细,甚至在显示其名称之前就向您指示控件的类型。

    我们也使用数字2,但是我不完全相信这是一个好方法。这是一种来自“bad”类型的匈牙利符号,意思是前缀表示类型(语法),而不是目的(语义)。问题是,以文本框开头的内容以后可能会变成下拉列表,然后变成RadioButtonGroup,每次都必须重命名该控件。

    几乎所有人都使用匈牙利风格的前缀(选项2)。
    语义命名不太有用,因为“Firstname”实际上是texbox.Text值,而不是textbox本身。

    我选择选项1的两个原因:

  • FirstNameTextBox与我的业务对象更加匹配
  • 更适用于IntelliSense

  • 说到这里,我正在考虑更改为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
    VS:

    • 克卡格里德酒店
    • Dlagerange
    • txtFirstName
    • txtLastName
      • 我不知道
        Abbreviation    ||   ASP.NET Control