我认为命名的主要区别在于逻辑和与视图相关的对象。您可能在页面的代码隐藏文件中有一个名为“ UserName ”的变量,但也有一个.NET TextBox,其中用户应该输入其用户名(一个合理的ID也将是“的用户名”)。我们如何区分(ID-wise)逻辑“ UserName ”和视图“ UserName ”。我的问题是,在提出这些名称时要做出明智的区分是什么?
在我看来,变量名称/控件ID永远不应该描述它是什么,只能描述它的作用。 “ tbUserName ”描述它是一个TextBox,“ strUserName ”定义它是一个字符串。
一个想法是为所有与视图相关的对象添加“ vwUserName ”前缀,并将逻辑部分保留为“ UserName ”。那有意义吗?当我们遇到验证器的情况时怎么办?您会将它们命名为“ vwUserNameRequiredValidator ”或“ vwEmailAddressFormatValidator ”吗?在那种情况下你需要描述它实际上是什么吗?您是否会将.NET RequiredFieldValidator对象的ID设为“ rfvUserName ”?
我真的想知道其他人对此的看法,因为我想提出一个合理且一致的命名约定系统。我很有兴趣听到任何类型系统的论据。
答案 0 :(得分:2)
匈牙利的表示法是如此......; - )
我会将userName用于逻辑,将userName用作id。
答案 1 :(得分:2)
我倾向于使用 _userName 作为变量, UserName 作为代码隐藏的属性,以及文本框 UserNameField 的ID。我发现以这种方式使用intellisense更容易,而不是像在txtUserName的VB-days中那样做前缀。
编辑:不要将其称为UserNameTextBox,但如果您想将字段(即TextBox)交换到另一个控件,UserNameField也更容易使用(尽管它可能不适用于此用户名示例。
答案 2 :(得分:1)
对于控件,我总是添加一个前缀,如:
Textbox - txtName - 我不使用tb,因为它使用tbl作为HtmlTable可能会造成混淆
复选框 - cbIsNameRequired
RequiredFieldValidator - rfvName
对于变量:
姓名
IsNameRequired
等。
关于习惯一个模式,但总是有一个模式......