Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C#中命名私有和静态私有方法的最佳实践是什么?_C#_Naming Conventions_Private Methods - Fatal编程技术网

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

在C#中命名私有和静态私有方法的最佳实践是什么?,c#,naming-conventions,private-methods,C#,Naming Conventions,Private Methods,我试图找出在C#中命名私有方法和私有静态方法最聪明的方法是什么 背景: 我知道私人会员的最佳做法是下划线前缀+camelcase。你可以和我争论这个问题,但相信我,我已经看到了足够多的来自铁杆专业人士的遵循这个惯例的代码,这是熟练的行业标准 我还知道pascal案例是公共方法的行业标准。但是我已经看到,对于私有和私有静态方法,pascal case、camelcase和下划线prefix+camelcase组合使用了测试样式命名(即,method\u必须\u偶尔返回\u false) 但是C#中

我试图找出在C#中命名私有方法和私有静态方法最聪明的方法是什么

背景: 我知道私人会员的最佳做法是下划线前缀+camelcase。你可以和我争论这个问题,但相信我,我已经看到了足够多的来自铁杆专业人士的遵循这个惯例的代码,这是熟练的行业标准

我还知道pascal案例是公共方法的行业标准。但是我已经看到,对于私有和私有静态方法,pascal case、camelcase和下划线prefix+camelcase组合使用了测试样式命名(即,method\u必须\u偶尔返回\u false)

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

如果有某些风格是从一些私有方法而不是其他方法中使用的,我可以理解,请解释一下

感谢阅读。

看看微软和布拉德·艾布拉姆的

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

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

我不知道行业标准,但即使对于私有方法也使用Pascal大小写,我对静态方法没有区别。

对于.NET类库开发,不区分公共和私有用法,并推荐静态方法的案例

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


编辑2:自从最初写这篇文章以来,我换了工作。我们遵循的编码标准不同于我个人的感受,我们在私有字段前面加下划线。我也开始使用ReSharper,我们的标准(通常)遵循默认规则。我发现我很容易接受下划线。我仅在绝对需要时使用
,因为它不符合我们的代码标准。一致性胜过个人偏好。

一个选择是使用一个工具来强制您保持一致性,例如(如果您使用的是style cop on插件)。大多数工具似乎都执行了(建议)微软的指导原则,因为这些指导原则可以让你通过一些测试,以获得微软平台对你的代码的认可。

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

我发现,作为一名专业开发人员,专业人员的一部分是为了适应可能有不同编码约定的新团队

能够改变你的风格,并在最初几周内处理由此产生的认知失调,这是职业的一部分

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

我还看到过关于camelCase和Pascal案例的辩论,它们分裂了社区,有时分裂了团队——我想这就是编码方案的意义所在

因此,除非项目是你作为唯一的开发者,在这种情况下你是自由的-试着找出团队的其他成员喜欢使用什么,以及什么使团队更容易理解


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

奇怪的下划线命名惯例通常仅限于测试,因为它使测试更具可读性,BDD非常鼓励这种做法。请记住,虽然一个方法用一种简短的方式描述了它的功能(
DepositMoney
),但测试需要描述它们在做什么,即,
负存款必须被抓住

在我的书中,任何拥有~35K代表的人都是铁杆专家。我很欣赏这种感觉,但我觉得我还有很多东西要学。很高兴知道我不是唯一一个使用“这个”的人——很多次我被告知这是代码气味。@Sherlock,我认为这根本不是代码气味。这是一种自我记录的方式,让某人知道他们当前查看的变量是属性而不是局部变量。这一点毫无疑问,与命名约定不同,命名约定差异很大。没错,但我想知道,因为我们都知道,微软可能非常聪明,也可能非常愚蠢。对于私有方法有不同的约定似乎更有意义,就像对于私有成员有不同的约定一样。此外,很明显,FxCop的一些规则是愚蠢的。我同意FxCop的一些规则看起来很愚蠢,但我坚信让我们的社区更接近标准。我觉得微软在这个领域拥有最大的发言权。有很多工具(intellisense等)和编译器消息来确定项的范围,我们不需要不同的名称。我同意有各种工具可以让它变得简单,但我不同意在与intellisense结合使用时,使用不同的命名是一个强大的工具。例如,我可以使用下划线字符快速访问私有成员。MS推荐PascalCase作为私有方法的原因是VB.NET兼容性。当你决定什么样的惯例最适合你的团队时,要考虑到这一点。