私有成员命名规范

3
在我们的项目中,我们使用VB.NET和C#代码。
现在,微软似乎不推荐使用下划线 "_" 或 "m" 前缀表示私有字段(例如 BackColor 的 _BackColor)。
另一方面,在 VB.NET 代码中无法应用 Visual Studio 使用的“C#标准”来将私有字段转换为小写字母,因为 VB 不支持通过大小写区分标识符。
你认为呢?
PS.
进一步研究微软规范,我发现 Microsoft 没有公开推荐私有字段命名,因此我们可以使用任何所需的...

2
正确。关于私有字段的命名,没有公共建议,因为它们根据定义是私有的。其他人看不到您如何命名这些字段,所以这并不重要。我使用_m_,因为VB.NET不区分大小写。在C#中,我也这样做,因为我希望它不区分大小写。只要在整个代码库中保持一致,这样做绝对没有任何问题。 - Cody Gray
3个回答

2

标准的整个目的就是为了促进一致性和理解。

在这种情况下,因为你有多种语言,我建议使用 "_" 或者 "m",但一定要记录下你为什么做出这个决定,这样在18个月后,新员工(甚至是你自己)看着代码不会感到困惑。


1
如果您已经按此方式命名了所有私有字段,我不确定为什么您需要记录此内容。一致性是关键,您已在答案中提到了这一点。我不想在源代码中看到关于此的注释;那只是噪音。使用下划线或m_作为变量前缀是完全标准的约定,新手只需要10秒钟就可以弄清楚。没有必要感到困惑。 - Cody Gray
@Cody - 我没有考虑在代码中记录它,只是在公司标准文件中记录(这应该不超过一张A4纸)。为什么要写下来呢?因为人们会忘记。 - ChrisF
最后,什么更好:_B_bmB 还是 MB?我会选择 _B,因为如果你有一个公共的 "YShit",开发者应该处理 m... - serhio
@serhio - 如果你真的无法决定,那就掷一个四面体骰子吧——它们都是同样有效的,但如果你更喜欢 _B 的话就选择它。 - ChrisF
@ChrisF:我只是认为“m”前缀有时会改变变量名称的含义... - serhio

1

我通常使用驼峰命名法来命名我的私有属性,或者在前面加上下划线“_”,然后继续使用驼峰命名法,这取决于编程语言

private bool isReady;
private bool _isReady;

在我的看法中,使用'_'前缀会更加清晰,因为它避免了在参数名称可能相同时使用this的情况。

class Person
{
    private string _name;

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

然而,您应该尝试坚持一个约定。


所以,如果你有两个标准,那么你就没有标准。对我来说,我不能使用第一个,所以你会推荐第二个吗?... - serhio
@serhio:我会根据不同的编程语言来选择,对于AS3,我通常采用第二种方式,而对于C#,我习惯使用第一种方式。我确实建议你采用第二种方式。 - Kevin

1

您应该考虑使用StyleCop来验证您的代码是否存在不一致性。StyleCop更喜欢使用this而不是像我一样添加前缀来标识成员,原因如下:

默认情况下,StyleCop禁止使用下划线、m_等来标记本地类字段,而倾向于使用“this.”前缀。使用“this.”的优点是它同样适用于所有元素类型,包括方法、属性等,而不仅仅是字段,使得对类成员的所有调用在任何编辑器中查看代码时都能立即被识别出来。另一个优点是它可以快速、明显地区分实例成员和静态成员,后者不会被添加前缀。

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


这与参数无关,而是关于私有字段。在VB中,我不能同时拥有private backColorpublic BackColor,所以与this(或VB中的Me)无关... - serhio
我的回答与参数无关。我是说你不应该在私有字段上使用任何前缀,而应该使用驼峰命名法,所以在你的情况下将字段称为backColor。然后在类内访问该字段时使用它。 - devdigital
你没有抓住重点。你不能称呼字段为 backColor,因为属性名应该是 BackColor。CLR 并没有规定所有兼容的语言都是大小写敏感的。你的“规则”或“约定”根本不是这样。 - Cody Gray
我理解你的观点,Cody。只要保持一致性,个人认为前缀无关紧要,而像 StyleCop 这样的工具可以大有裨益。在这种情况下,我希望在 C# 中不使用前缀,在 VB.NET 中则使用约定好的前缀。 - devdigital
2
我认为语言传播可能会对代码库的可维护性造成比在私有字段上使用前缀更大的负担。 - devdigital
显示剩余3条评论

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