在C#中,命名私有方法和静态私有方法的最佳实践是什么?

10

我正在尝试找出在 C# 中给私有方法和私有静态方法命名的最聪明的方式。

背景: 我知道对于私有成员来说,最佳实践是下划线前缀 + 骆驼拼写法。你可以和我争论这个问题,但请相信我,我已经看过足够多遵循这种约定的 hardcore 专业人士的代码,这是技术行业的标准。

我也知道帕斯卡命名法是公共方法的行业标准。但是我已经看到了一些测试风格的命名(例如,method_must_return_false_occasionally)以及私有和私有静态方法的帕斯卡命名法、骆驼拼写法和下划线前缀 + 骆驼拼写法的组合。

但是,在 C# 中给私有方法和私有静态方法命名的最佳实践是什么样的呢?

如果某些私有方法使用了特定的样式而其他方法没有使用,则我可以理解,只需要解释一下即可。

谢谢阅读。

6个回答

17

查看Microsoft的命名准则和Brad Abram的样式指南

他们说所有方法都应该使用PascalCase。

public void DoWork() {}
private void StillDoWork() {}
private static void ContinueToDoWork() {}

9
没错,但我在想,正如我们都知道的那样,微软有时既聪明又傻。似乎使用不同的约定来表示私有方法更有意义,就像有一个不同的约定来表示私有成员一样。此外,显然fxcop的一些规则很荒谬。 - Mark Rogers
我同意 FxCop 的一些规则看起来很傻,但我坚信将我们的社区更接近标准。我觉得微软在这个领域有最大的发言权。有许多工具(智能感知等)和编译器消息可以确定项目的范围,我们不需要不同的名称。 - bendewey
我同意有许多工具可以使编程变得更容易,但我尊重地不同意使用不同的命名方式与智能感知相结合可以成为一个强大的工具。例如,我可以使用下划线字符快速访问私有成员。 - Mark Rogers
微软推荐使用 PascalCase 命名法来命名私有方法是为了与 VB.NET 兼容性考虑。当你决定哪种命名规范最适合你的团队时,请考虑这一点。 - Marat Asadurian

7
.NET类库开发的命名规则不区分公共和私有用法,并建议静态方法使用Pascal大小写。 编辑:我个人的做法是在方法和属性中使用Pascal大小写,在字段、参数和局部变量中使用camel大小写。当从类内引用实例成员时,我使用this.来区分类成员和参数(必要时)。我不知道自己是否算得上“顶尖专业人士”,但我确实拿到了薪水。 :-) 编辑2:自从我写这篇文章以来,我换了工作。我们遵循的编码标准与我的个人感受不同,我们确实使用下划线前缀私有字段。我也开始使用ReSharper,我们的标准(通常)遵循默认规则。我发现我可以轻松地接受下划线。只有在绝对需要时才使用this,因为它不符合我们的代码标准。一致性胜过个人喜好。

1
在我看来,任何拥有约35K声望的人都是我的硬核专业人士。 - bendewey
1
我欣赏这种情感,但我觉得我还有很多东西要学习。 - tvanfosson
很高兴知道我不是唯一使用“this”的人 - 我被告知这是代码异味的次数太多了。 - Sherlock
@Sherlock,我认为这并不是代码异味。这是一种自我记录的方式,让某人知道他们当前查看的变量是一个属性而不是局部变量。而且这是毫无疑义的,不像命名约定那样存在广泛差异。 - overgroove

3

我不知道行业标准,但即使是私有方法,我也使用帕斯卡命名法,并且对于静态方法没有区别。


2

我曾经工作过的每个地方都有不同的做法。

作为一名专业开发人员,我发现适应新团队(可能有不同的编码规范)也是职业素养的一部分。在前几周内能够切换风格并应对认知失调是这个职业的一部分。

我会开始关注各种开源项目以及类似的项目,你会看到各种不同的方案。

我还看到下划线、小驼峰和帕斯卡等命名方式引起了分歧甚至瓦解了某些社区和团队 - 这也许就是编码规范的意义所在。

因此,除非这个项目只有你一个开发人员,否则请尝试了解团队其他成员喜欢使用的编码规范,以及使团队理解更容易的方式。

另一个需要考虑的因素是面向对象编程中的代码复杂度。如果这是一个简单的项目或者是一个复杂的面向对象设计,使用多种模式或者使用了某些 IOC,那么请尝试在不同类型的编码标准上运行"探针",当你使用它时,查看代码的物理外观 - 它对你和团队来说是否美观。


2

weird_underscore_naming 命名规则通常仅限于测试中,因为它使得测试更易读,并且是BDD强烈推荐的。请记住,方法用简短的方式描述其功能(DepositMoney),而测试需要描述它们正在执行的内容,即Negative_deposits_must_be_caught


1

一种选择是使用强制你保持一致的工具,例如StyleCop(如果你使用ReSharper,则可以在CodePlex上找到StyleCop插件)。大多数工具似乎都会强制(或建议)遵循微软的指南,因为这些指南可以帮助你通过一些测试,以获得MS平台对你的代码的认可。


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