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

时间:2009-04-04 17:53:47

标签: c# naming-conventions private-methods

我正在试图弄清楚在C#中命名私有方法和私有静态方法的最聪明方法是什么。

背景: 我知道私有成员的最佳做法是下划线前缀+ camelcase。您可以和我争辩,但相信我,我已经看到了遵循此惯例的核心专业人士的足够代码,这是熟练的行业标准。

我也知道pascal案例是公共方法的行业标准。但我已经看到测试样式命名(即method_must_return_false_occasionally)与pascal case,camelcase和underscore-prefix + camelcase的组合,用于私有和私有静态方法。

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

如果某些私人方法中使用的某些样式而非其他方法,我可以理解,只需解释一下。

感谢阅读。

6 个答案:

答案 0 :(得分:16)

查看微软的Naming Guidelines和Brad Abram的Style Guide

他们说所有方法都应该是PascalCase

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

答案 1 :(得分:6)

.NET类库开发的naming guidelines不区分公共和私有使用,并建议使用Pascal静态方法。

编辑:我个人的做法是使用Pascal大小写方法和属性,使用字段,参数和局部变量的驼峰大小写。当从类中引用实例成员时,我使用this.在必要时区分类成员和参数。我不知道我是否有资格成为“硬核专业人士”,但我确实得到报酬。 : - )

编辑2 :自从写这篇文章以来我改变了工作。我们遵循的编码标准与我的个人感受不同,我们使用下划线为私有字段添加前缀。我也开始使用ReSharper,我们的标准(通常)遵循默认规则。我发现我可以轻松地使用下划线。我绝对需要时才使用this,因为它不符合我们的代码标准。一致性胜过个人偏好。

答案 2 :(得分:3)

我不了解行业标准,但即使是私有方法也使用Pascal套管,我对静态方法没有区别。

答案 3 :(得分:2)

weird_underscore_naming约定通常仅限于测试,因为它使它们更具可读性,并且是BDD大力鼓励的。请记住,虽然方法以简短的方式描述它的作用(DepositMoney),但测试需要描述它们正在做什么,即Negative_deposits_must_be_caught

答案 4 :(得分:1)

一种选择是使用强制您保持一致的工具,例如style cop(如果您使用reSharpercodeplex上有样式警察的插件。大多数工具似乎都强制执行(?建议)Microsoft指南,因为这些指南会让您通过一些测试来获得MS平台批准您的代码。

答案 5 :(得分:1)

我工作的每个地方总是采用不同的方式。

我发现作为一名专业开发人员,专业人员的一部分就是适应新的团队,这些团队可能有不同的编码惯例。

能够改变你的风格并应对这在最初几周产生的认知失调,是这个职业的一部分。

我会开始研究各种开源和类似的项目,你会看到各种各样的方案。

我也看到了下划线camelCase和Pascal案例辩论分裂社区,有时是团队 - 我猜这是编码方案的重点。

因此,除非项目是您作为唯一的开发人员,在这种情况下您是免费的 - 尝试找出团队其他成员喜欢使用的内容以及团队更容易理解的内容。

我要考虑的另一件事是OO术语中代码的复杂性,如果这是一个简单的项目或具有多个模式的复杂OO设计,或者您正在使用某些IOC然后开始在不同类型的上运行“尖峰”编码标准,然后查看代码在使用时的实际外观 - 对您和团队看起来不错或看起来很难看。