我应该如何使用相同的名称为变量添加前缀?

时间:2013-02-03 14:18:02

标签: c# winforms naming-conventions

我正在用C#创建一个基于Windows Forms的应用程序。我的表单的构造函数接受参数string title,然后将该值保存到string this.Title属性,最后我创建一个窗口标签Label this.Title

问题很明显:我的Labelstring具有相同的名称,我对C#中的命名约定感到好奇。我该怎么办?

这是完整的代码:

// BNForm.cs
public partial class BNForm : Form
{
    public string Title;

    public BNForm(string title)
    {
        this.Title = title;
        InitControls();
    }
}

// BNForm.Designer.cs
partial class BNForm
{
    private Label Title;

    private InitControls()
    {
        this.Title = new Label();
        this.Title.Text = this.Title; // Trying to access the string here
        this.Title.AutoSize = true;
        this.Title.Location = new Point(15, 15);
        this.Controls.Add(this.Title); // Trying to access the Label here
    }
}

我首先调用了我的标签变量label_Title,但后来我必须添加一个新变量Button[] Buttons,然后应该调用buttonArray_Buttons,这听起来很愚蠢。

我应该如何命名我的变量?是否有这种命名的规则?

4 个答案:

答案 0 :(得分:3)

不要使用前缀,因为它们被认为是不好的做法。只需使用常识。如何调用标签字段titleLabel呢? “它在锡上说的是什么”......即它是明确的。

答案 1 :(得分:1)

首先,我要清楚地知道只有不同情况的变量名称,通常这是一个巨大的可理解性问题。 我倾向于在带有arg的方法中为我的参数添加前缀,但是有些人不喜欢这样。

LblTitle或一些等效的匈牙利表示法是一种相当标准的方法。我尽量避免这种情况。如果您想在文本框中显示标题,重命名所有内容或启用混淆模式,该怎么办?

在这种情况下,我会将Title属性重命名为DisplayTitle,或将标签重命名为TitleDisplay。

另一种选择是创建一个结构或类来保存标题属性然后你可以做

[this。] Title.Text = [this。] Setup.Title;

无论你做什么选择一个标准并坚持下去,都是唯一的规则。

答案 2 :(得分:0)

以下是变量命名中的几个dos和donts以及不同控件的其他前缀指南。

下放

  • 将所有标识符命名为描述其标识符的有意义名称 功能。
  • 使用“m_”作为前缀成员字段,但没有别的(f 前缀,后缀等)
  • 使用英文名称命名所有标识符。
  • 对名称空间,类型,枚举,方法名称使用Pascal大小写。
  • 对参数,字段和局部变量使用驼峰套管。
  • 使用I作为所有接口的前缀。使用后缀添加所有异常类 异常。
  • 使用Attribute为所有属性类添加后缀。做后缀全部 EventHandler的事件处理程序。
  • 请使用上部外壳作为常量。

不该做什么

  • 请勿使用匈牙利表示法。
  • 请勿对大于两个字符的任何标识符使用大写字母(除上述常量外)。
  • 不要仅根据案例来区分标识符。
  • 请勿使用缩写或缩写。
  • 请勿使用业内通常不接受的首字母缩略词。
  • 请勿将上壳用于长度超过两个字符的首字母缩略词。
  • 请勿使用复制关键字或常用.NET命名空间的标识符名称。
  • 不要在枚举,类,结构或委托名称前加上前缀。
  • 请勿使用枚举后缀枚举类型。

变量命名建议。只需根据对象类型为所有变量添加前缀:

  • 按钮 - btn
  • CheckBox - chk
  • ComboBox - cmb
  • DataColumn - dcol
  • DataGrid - dgrid
  • DataGridDateTimePickerColumn - dgdtpc
  • DataGridTableStyle - dgts
  • DataGridTextBoxColumn - dgtbc
  • 对话 - dlg
  • GroupBox - gbx
  • ImageList - iml
  • Label - lbl
  • ListBox - lbx
  • ListView - lv
  • Mainmenu - mm
  • MenuItem - mi
  • MDI-Frame - frm
  • MDI-Sheet - sht
  • NumericUpDown - nud
  • Panel - pnl
  • PictureBox - pbx
  • RadioButton - rbt
  • SDI-Form - 表格
  • StatusBar - stb
  • TabControl - 标签
  • TabPage - 标签
  • TextBox - txt
  • ToolBar - tbr
  • ToolBarButton - tbb
  • 计时器 - tmr
  • UserControl - usr
  • WindowsPrincipal - wpl
  • GridEX - gex
  • TreeView - tv
  • UICommand - cmd
  • EditBox - edt
  • DataView - viw
  • DataTable - tbl
  • DataSet - ds

希望这会有所帮助。

答案 3 :(得分:0)

现在我了解C#(以及“Antonijn”已经在评论中提到过)了解更多我知道private成员变量应以小写字母和public开头属性以大写字母开头。

考虑到这一点,我的public string Title;保持原样,但标签变为private Label title;,这让我将这两者分开。感谢大家的答案,即使他们没有帮助我解决这个问题(好的建议,我只是不喜欢lblTitle等),他们给了我更多关于C#的知识。