7

命名表单和报告上的 UI 控件(文本框、下拉列表等)以供代码隐藏页面参考的最佳做法是什么?

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

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

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

4

7 回答 7

7

我在工作中使用的主要产品使用 txt_pnl_ 等前缀。这确实有效,尽管有时将仅隐藏/显示控件的内容从 tr 切换到面板时会有些痛苦,因为您必须重命名它。

我在新项目中开始做的是用 ui 前缀命名我的 UI 控件;例如,uiName。由于我强烈反对反匈牙利符号,并努力实现自文档化代码,所以这个约定很好用。事实上,如果有的话,它是真正的匈牙利符号(ui 是前缀表示用户界面控制)。

于 2008-09-21T20:04:28.157 回答
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
于 2008-09-21T20:28:40.343 回答
7

对于 GUI 控件,我在变量名称后加上控件名称:

  • 名字文本框
  • 姓氏文本框
  • 提交按钮

这使得例如 _firstName 和 firstNameTextBox.Text 之间的关系显而易见,并且没有人必须记住匈牙利符号等价物是什么。在命名变量时,我总是选择清晰而不是简洁。

于 2008-09-21T21:04:22.987 回答
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

于 2008-09-21T19:32:06.377 回答
1

我跟你一样。当您拥有大量控件时,一切都会变得混乱,因此我在每个名称前加上控件类的大写字母。

例如:

文本框-> tbName

数据网格-> dgName

面板 -> pName

这清楚地说明了如何处理新控件(即如何派生前缀)

于 2008-09-21T19:36:10.157 回答
0

我一直觉得前缀的唯一真正原因是你可以在同一个表单/页面上拥有 txtFirstName 和 lblFirstName 之类的东西。因为,绝大多数时候,我真的只使用实际的字段控件本身,我跳过了前缀,只使用关联控件的前缀。例如,lblMonth & Month,跳过 cbo 前缀。

它节省了打字,而且通常很明显您在这种形式中使用了什么样的控件。更复杂的控件将获得完整的前缀处理。

于 2008-09-21T20:04:59.073 回答
0

我更喜欢 iOS UI 组件的 2 字符前缀:

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

于 2017-10-14T12:11:02.420 回答