控件的命名约定

时间:2009-03-13 13:41:38

标签: c# .net naming-conventions

Microsoft在其网站(here)上有命名准则。我也有“框架设计指南”一书。

我找不到的是关于命名控件的指南。

例如,一个按钮,当放到表单时,会得到typename + number,驼峰作为默认名称,例如“button1”。

这就是我所做的:我删除了数字并在之后添加了有意义的描述。例如“buttonDelete”或“buttonSave”。

通过这种方式,您无需在某个指南中维护大量控件及其缩写名称。

你同意吗?

12 个答案:

答案 0 :(得分:25)

警告: 以下内容更多针对 WinForm / WPF 开发。 Patrick Peters正确地指出在处理ASP.NET控件时存在带宽/性能问题。

这里没有真正的标准,我相信这是因为它是任意命名方案中最强大的一个。在大多数情况下,控件对于类是私有的,并且仅在事件处理程序中轻易使用。

与其他回答者一样,我也曾花费大量时间“修复”控制名称。我会做“btnSave”,“tbxName”(文本框的tbx)等等。但是,在向其他人解释我的方案时,我意识到这是多么武断。 “cbx”是ComboBox还是Checkbox?

这让我重新审视设计师自动完成的工作,并意识到如果我让设计师完成工作,我可以清晰,一致,快速地命名控件。它实际上非常类似于问题海报的建议:

我用控件的语义替换控件号。因此“button1”(设计器默认值)将为“buttonSave”,“listBox3”将成为“listBoxWidgets”。如果只有一个该类型的控件,我只删除数字:“errorProvider1”变为“errorProvider”。

那怎么更好?

  • 如果它是一个内部变量,那么精心“修复”变量名是浪费时间
  • 你的命名方案可能含糊不清如果它缩短了一大堆东西(CheckBox与ComboBox)
  • 设计师提供了一个简单(快速)专业化的良好,一致的起点
  • 使用Intellisense时<变量名称的长度无关
  • 当按类型开头时,控制名称可以很好地直观地(在智能感知中)组合。当你的表单上有15个TextBox时,你首先要记住你想要一个TextBox,输入“textBox”,然后从列表中选择名称。
  • 任何不熟悉您的“计划”的人都可以立即看到并采用它比其他任何方式更快。<​​/ li>
  • 提供有用的控制名称非常快......非常少的键盘/鼠标可以做到这一点...因此具有直观的结果,因此具有高生产率。什么不喜欢?

PS。这是一个倾向于Bikeshed的问题,但是因为我可以画一个bikeshed,我继续参加讨论。 ;)

答案 1 :(得分:24)

以下是一些常见的内容:

frm  Form
mnu  Form menu
cmd  Command button
chk  Check button
opt  Radio button
lbl  Text label
txt  Text edit box
pb   Picture box
pic  Picture
lst  List box
cbo  Combo box
tmr  Timer

较长的列表位于 INFO: Object Hungarian Notation Naming Conventions for VB

答案 2 :(得分:19)

我没有这样的约定,但我确实尝试使用名称的“类型”部分。例如按钮,链接按钮,图像按钮往往被命名为'somethingButton'。组合框,单选按钮列表最终都是'somethingSelector'。 TextBoxes和Calendars是'somethingInput'。这样我就可以大致了解它的控制方式,而不会将名称与实际实现联系起来。如果我决定用下拉列表替换选项按钮组,则无需重命名!

答案 3 :(得分:4)

我没有做WinForms很长一段时间,但我做的是两件事。

  • 取消选中“生成成员”(或称为“成员”)以获取标签等内容。基本上确保我只将字段保留为字段。
  • 对于我需要的人,设置描述性名称。如果有必要,追加控件的名称(即saveButton)。如果我不想添加控件名称添加任何值,我不会附加“按钮”并将名称简单地保留为“保存”。

基本上大部分时间我都不会为保存按钮创建成员。 (如果你有一些保存逻辑,你仍然可以只有OnSaving事件处理程序订阅按钮的Click事件。)

https://msdn.microsoft.com/en-us/library/ms233630(v=vs.110).aspx

答案 4 :(得分:3)

是更改这些名称

对我来说:

  • Button btnDescription

  • TextBox txtDescription

  • ComboBox cboDescription

等...

答案 5 :(得分:2)

当涉及各种约定时,GUI编程得到了简短的介绍。有关我用于命名的指南,请参阅我的answer to another question

答案 6 :(得分:1)

是的,您需要任何变量的有意义的标识符 - 控制与否 - 默认名称仅仅是因为您的IDE对您的问题域一无所知,因此无法始终“猜测”更好的名称。

答案 7 :(得分:1)

我可能是最后几个仍然使用匈牙利表示法的人之一。我知道IDE可以告诉你变量类型的论点,但是当我在Notepad ++中编码或查看打印输出时,这对我没有帮助....无论如何,我使用“btnSave”,“cbOptions”, “txtFirstName”,“lblTitle”,“ddlCardType”等......我只是想看一眼代码并知道我在看什么而不寻找声明或将鼠标悬停在一个变量上以获取它的数据类型IDE。

答案 8 :(得分:0)

是的,我完全同意(但我将其重命名为ButtonDelete),因此小写名称适用于我的情况:)

就个人而言,我认为只要你保持一致,即使其他人正在阅读你的代码,你也不会遇到问题。

答案 9 :(得分:0)

我不确定,但我认为Windows Forms中的控件命名是我可以看到Hungarian notation使用的唯一地方之一。所以我觉得你很好。

答案 10 :(得分:0)

我相信当前的想法会在名称中包含控件类型。我倾向于将它们视为我正在使用的另一个对象,并遵循相同的命名约定。

当然使用有意义的命名,不言而喻:)但是,在一天结束时,如果你的命名约定在你几个月后重新访问代码时仍然有意义,那么我可能会坚持使用它。

答案 11 :(得分:-1)

我们正在使用

This

简而言之,我们在控件前加上控件的缩写。即

Buttons = btnDelete,btnSubmit,btnReturn

Textboxes = txtUsername,txtPassword等

这样,通过输入缩写,您可以在键入缩写时获得所有类似的控件,即键入btn,intellisense将列出您到目前为止添加的所有按钮。