UI控件在代码后台中的命名规范最佳实践是什么?

7

在表单和报告中,对于UI控件(文本框、下拉框等)的命名,有哪些最佳实践,以便在代码后台页面中引用?

我在办公室开发了很多报告和表单。我有几个Web应用程序,提供大约80多个“实时”报告,这些报告是从各种多个数据源(Access、SQL、Oracle)生成的。这些报告被认为是“实时”的,因为它们接受来自表单的用户设置参数,然后查询数据库以根据当前可用信息生成报告。

因此,该过程始于获取用户设置的值,将其传递给数据库查询,接收数据集,最后将数据集分配给报告。在某些情况下,需要从数据集计算出在报告中显示的其他字段,然后才能生成报告。这需要引用报告上的输出控件来分配计算值。

虽然我不太关心在变量或成员字段的代码中使用前缀,但我确实使用它们来标识UI控件。例如,txtFirstName用于引用报告控件,以将数据从数据集中的FirstName字段分配到报告上的显示控件。是否有更好的做法来命名/引用表单和报告中的UI控件?

7个回答

8

对于 GUI 控件,我会在变量名后缀控件名称:

  • firstNameTextBox(名字输入框)
  • lastNameTextBox(姓氏输入框)
  • submitButton(提交按钮)

这使得 _firstName 和 firstNameTextBox.Text 之间的关系变得明显,无需记忆匈牙利命名法的等效项。在为变量命名时,我总是选择清晰易懂而不是简洁。


7
我在工作中主要负责的产品使用txt_ pnl_等前缀。虽然这样做是有效的,但有时会很麻烦,比如将隐藏/显示控件从tr更改为panel时需要重新命名。在新项目中,我开始使用ui前缀来命名UI控件,例如uiName。由于我坚决反对匈牙利命名法,并且追求自我记录代码,这种约定非常适合。实际上,如果说有什么区别的话,那就是真正的匈牙利命名法(ui是指用户界面控件的前缀)。

我喜欢你使用“ui”作为控件前缀的方式——首先它是标准化的,而不是特定于实现的。通常,在表单或报告中只会出现一个数据字段的实例(例如,在报告的详细部分包含名字值的文本框可能只会出现一次)。 - Ronn Reeves

7

我仍然使用匈牙利命名法来命名控件,但不再用于变量。

btn Button
cbo ComboBox
chk CheckBox
clb CheckedListBox
grp GroupBox
iml ImageList
lbl Label
lnk Hyperlink
mnu Menu
pbr ProgressBar
pic Picture
pnl Panel
rtb RichTextBox
tmr Timer
tvw TreeView
txt TextBox

请注意,这里用的是“系统匈牙利命名法”(或者称作“反匈牙利命名法”),而不是真正的匈牙利命名法。匈牙利命名法使用函数类型而非语言类型。搜索两个术语,你会找到为什么有两种解释的原因。 - gregmac

3

你在这里的答案将是非常主观的。不同的口味和编程背景会给你不同的偏好。

也许对你来说最重要的是在所有项目中保持一致性,这样无论谁开发代码,当阅读时你都能理解它。

我们外包很多工作,所以一定要向所有项目经理传达我们的命名约定。

以下是一些命名约定的链接:

http://www.irritatedvowel.net/Programming/Standards.aspx

http://msdn.microsoft.com/en-us/library/xzf533w0(VS.71).aspx

http://www.visualize.uk.com/resources/asp-net-standards.asp


1

我和你做的类似。当你有大量控件时,所有东西都变得混乱,所以我会在每个名称前缀中加上控件类的大写字母。

例如:

TextBox -> tbName

DataGrid -> dgName

Panel -> pName

这样可以清楚地说明如何处理新的控件(即如何派生前缀)。


如果你还有一个名为“pName”的Picture对象呢?一个单独的字母肯定无法涵盖所有内容。这就是为什么我更喜欢至少3个字符以便于区分。 - Tor
你误解了我的意思。假设有一个用于输入电子邮件的文本框,它应该被称为 "tbEmail",因此可能会出现重叠的情况,但这种可能性非常小。关键不在于使用匈牙利命名法,而在于轻松区分例如:tbEmail 和 lEmail(其中第二个是与文本框关联的标签)。 - Sklivvz

0

我一直认为前缀的唯一真正原因是让你可以在同一个表单/页面上使用txtFirstName 和lblFirstName 这样的控件名称。由于 在绝大多数情况下,我只需要处理实际的字段控件本身,所以我跳过该前缀,并仅为相关控件使用前缀。例如,lblMonth和Month ,跳过cbo前缀。

这样做可以节省打字时间,在这种表单中,你通常可以很清楚地知道要使用什么类型的控件。较复杂的控件将获得完整的前缀处理。


0

iOS UI组件的两个字符前缀,我更喜欢使用:

bt_:按钮(UIButton)
lb_:标签(UILabel)
tx_:文本框(UITextField)
tv_:文本视图(UITextView)
vw_:视图(UIView)
im_:图像视图(UIImageView)
sc_:滚动视图(UIScrollView)
tb_:表格视图(UITableView)
cl_:集合视图(UICollectionView)
st_:堆栈视图(UIStackView)
pk_:选择器视图(UIPickerView)
pr_:进度条视图(UIProgressView)
ai_:活动指示器视图(UIActivityIndicatorView)
wb_:网页视图 / 网页工具包视图(UIWebView / WKWebView)
mp_:地图视图(MKMapView)
gr_:手势识别器(UIGestureRecognizer)
sw_:开关视图(UISwitch)
sl_:滑块视图(UISlider)
sp_:步进器视图(UIStepper)
sg_:分段控制视图(UISegmentedControl)
pg_:页面控制视图(UIPageControl)
dp_:日期选择器视图(UIDatePicker)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接