.net 私人成员命名约定

.net 私人成员命名约定,.net,coding-style,.net,Coding Style,在我们的项目中,我们同时使用VB.NET和C#代码 现在,微软似乎不建议在私有字段中使用“u”或“m”前缀(如\u BackColor的BackColor) 另一方面,Visual Studio“C#standard”使用的小写私有字段不能应用于VB.NET代码中,因为VB不支持按大小写区分标识符 你觉得怎么样 PS. 再研究一点MS惯例,我发现微软没有关于私有字段命名的公开建议,所以我们可以使用任何想要的…标准的全部目的是促进一致性和理解 在这种情况下,因为你有多种语言,我会选择“uu”或“m

在我们的项目中,我们同时使用VB.NET和C#代码

现在,微软似乎不建议在私有字段中使用“u”或“m”前缀(如
\u BackColor
BackColor

另一方面,Visual Studio“C#standard”使用的小写私有字段不能应用于VB.NET代码中,因为VB不支持按大小写区分标识符

你觉得怎么样

PS.

再研究一点MS惯例,我发现微软没有关于私有字段命名的公开建议,所以我们可以使用任何想要的…

标准的全部目的是促进一致性和理解


在这种情况下,因为你有多种语言,我会选择“uu”或“m”,但要确保你记录了你做出这个决定的原因,这样在18个月内,新员工(甚至你)就不会看代码而选择“WTF?”。

我通常用camel case命名我的私人物业,或者,根据语言的不同,在它们前面加上“u”,然后继续使用驼峰大小写

在我看来,前缀为“u”看起来更干净,因为它避免了在调用相同参数时使用
this

class Person
{
    private string _name;

    public Person(string name)
    {
        _name = name;
    }
}

但是,您应该尝试保持一种约定。

您应该研究使用来验证代码是否存在不一致性。出于以下原因,StyleCop更喜欢使用
this
,而不是在成员前加前缀(我也是这样做的):

默认情况下,StyleCop不允许使用 要标记的下划线、m_等 本地类字段,有利于 “这个。”前缀。使用 “这”是指它同样适用于 所有元素类型,包括方法, 属性等,而不仅仅是字段, 给班级成员打电话 可立即识别,无论 正在使用哪个编辑器查看 代码。另一个优点是 创建一个快速、可识别的 实例之间的区别 成员和静态成员,它们将 没有前缀


对于不区分大小写的语言,请使用约定的前缀。

因此,如果有两个标准,则没有标准。至于我,我不能用第一种,所以你推荐第二种?…@serhio:我用,但这取决于我使用的是哪种语言,在AS3中,我通常用第二种语言,而在C中,我习惯了第一种语言。我确实建议您使用第二种方法。这不是关于参数,而是关于私有字段。因此,在VB中,
这个
(或者VB中的
Me
)没有任何内容。在VB中,我不能同时拥有
私有背景色
公共背景色
…那么,在不区分大小写的语言中,您将私有字段命名为什么?你不能简单地用驼峰法对属性名进行大小写,我的答案与参数无关。我是说,你不应该在私有字段上使用任何前缀,而应该使用camelcase,所以在你的情况下调用你的字段backColor。然后在访问类中的字段时使用此选项。你没有抓住要点。无法调用字段
backColor
,因为属性名为
backColor
。CLR没有指定所有兼容语言都区分大小写。你的“规则”/“约定”两者都不是。我认为语言的传播可能会对代码库的可维护性造成更大的影响,而不是在私有字段上使用前缀。正确。没有关于如何命名私有字段的公共建议,因为根据定义它们是私有的。没有人知道这些字段是如何命名的,所以这并不重要。我使用
\uu
m
,因为VB.NET不区分大小写。我在C#中也这么做,因为我希望它不区分大小写。只要在整个代码库中保持一致,这绝对没有什么错。我不确定如果你用这种方式命名了所有的私有字段,为什么你必须记录这一点。一致性是这里的重点,你在回答中已经提到了这一点。我不想在源代码中看到关于这个的评论;那只是噪音。在变量前面加下划线或
m
是一个完美的标准惯例,新手需要10秒钟才能理解。不需要WTF。@Cody-我没有考虑在代码中记录它,只是在公司标准文档中(不应该超过一张A4)。你为什么要写下来?因为人们确实忘记了。最后,还有什么比这更好呢我会选择
\u B
,因为如果你有一个公共的“YShit”,开发者就必须处理
m.
@serhio-如果你真的不能决定掷一个四面骰子-它们都是同样有效的,但是如果你喜欢的话,可以选择
\u B
。@ChrisF:我只是觉得“m”前缀有时会改变变量名的含义。。。
class Person
{
    private string _name;

    public Person(string name)
    {
        _name = name;
    }
}