C#代码中使用帕斯卡命名法还是驼峰命名法?

40

我一直在和同事们争论帕斯卡命名法(大驼峰)和小驼峰命名法的问题。他们习惯于将所有内容都使用小驼峰命名法,包括 SQL 数据库中的表名和 C# 代码中的属性命名,但我更喜欢帕斯卡命名法,变量使用小驼峰命名法,属性使用帕斯卡命名法:

string firstName;
public string FirstName {
...
}

但他们已经习惯了这个:
string _firstname;
public string firstName {
...
}

我尝试遵循他们的“标准”,使代码看起来相同,但是我不喜欢它。
我看到至少.NET框架使用这种约定,这就是我尝试保持我的代码的方式,例如:
System.Console.WriteLine("string")

你使用/偏好什么?为什么?如果有人问过这个问题,我很抱歉,但我搜索了一下并没有找到任何相关的内容。
更新: 我给出了一个方法示例而不是属性,但它们是相同的。正如我在第一段中所述,我的同事们在所有方面(变量、方法、表名等)都使用帕斯卡命名法。
14个回答

42

这里提供了链接到官方的设计指南,它可能会有所帮助。具体来说,请阅读大写样式部分。

总的来说,帕斯卡命名法和驼峰命名法并不那么重要,而且你不太可能说服任何人回去修改现有代码库中名称的大小写。真正重要的是,在给定的代码库中保持一致性。

只要你不使用匈牙利命名法,我就很高兴。


我只希望有设计指南的PDF/Word版本,我会打印出来并称之为店铺标准! - Walden Leverich
这是一个很大的文档,但并不是_那么_大,而且Word可以很好地处理从HTML复制/粘贴。去试试吧。 - Joel Coehoorn
从链接中总结的内容:函数参数应使用驼峰命名法,其他所有内容均使用帕斯卡命名法。 - David Cian

39

我使用框架所使用的东西,因为这是事实上的最佳实践。然而,只要你公司的代码一致地使用它们的风格,那么你最好适应它。如果每个开发人员都有自己的标准,那么就根本没有标准。


19
我不同意这里的观点。我会尝试将前Java开发人员转向使用.NET标准,以保持与框架的一致性。 - Joe
4
根据环境而定,为了适应新人而改变标准往往是一种不明智的做法。 - Greg Hurlman
1
请链接到您所提及的CLM。 - user652038
2
@Jessy - CLM:职业发展限制行为。它们没有URL。 - Greg Hurlman
8
我投了反对票,很抱歉。我认为编程语言的程序员在整个行业中保持一致性更为重要,我认为这应该是我们的目标和信息传递。 - Luke Puplett

16

您应该看一下微软的新工具,StyleCop 用于检查C#源代码。 同时,注意FxCop 用于检查已编译的.Net程序集。 FxCop更关注代码的细节而非布局,但它确实有一些与公开可见名称相关的命名规则。

StyleCop定义了一种编码标准,现在被微软推广为行业标准。它根据标准检查C#源代码。 StyleCop遵循PascalCase样式。

让人们采用StyleCop(或任何其他标准)可能很困难,这是一个相当大的障碍,而StyleCop又相当详尽。但是代码应该符合统一的标准-个人标准比没有好,公司标准比个人标准好,行业标准最好。

当项目开始,组建团队且不存在现有代码时,说服人们变得容易得多。您可以使用工具(FxCop,StyleCop)来防止代码不符合标准。

应该使用语言和框架的标准- SQL代码应该使用SQL标准,C#代码应该使用C#标准。


哇!真不错,不知道那个。 - dguaraglia
FxCop 在处理已编译的程序集时也非常出色。我通过使用 StyleCop 和 FxCop 学会了如何进行 Pascal 和 Camel 命名法。 - Diago

10

对于公共接口,您应该遵循MS .NET框架设计指南: "Capitalization Conventions"。

对于非公开成员,可以由您和同事共同商定。


4

我(以及我的团队)更喜欢将类名首字母大写。

为什么?我认为这是Java标准的传播。


2
但这难道不会让我每次编写代码时都要考虑它是内部组件还是第三方或框架组件吗? - Chris Pitman
5
@ChrisPitman 我知道这是一条旧评论,但更让我困扰的是 Something()。那是一个函数调用还是一个类的构造函数? - vallentin

1

来自.NET Framework开发人员指南(大写规范),大小写敏感性:

大写规范仅存在于使标识符更易于阅读和识别。大小写不能用作避免库元素名称冲突的手段。

不要假设所有编程语言都区分大小写。它们并不是。名称不能仅因大小写而不同。


1

1
请勿使用URL缩短程序。比较您的版本和我的编辑,以了解如何正确地在答案中包含链接。 - user229044
谢谢Meagar。好的,下次我会这样做。 - Naveen Vijay
1
兰斯·亨特撰写 .Net 编码标准的资格是什么? - Eric

0

属性应使用帕斯卡命名法。至于变量名称,有些人使用下划线,有些人使用m_,有些人只是使用普通的驼峰命名法。我认为只要在这里保持一致,就不应该有问题。


0
你发布的 .NET 示例是一个函数。方法/函数的“标准”采用了大写驼峰命名法(或者如果你愿意这样称呼,帕斯卡命名法)。
我尽可能使用驼峰命名法。它可以让你轻松区分变量和方法。
此外,我喜欢在本地类变量前加下划线。例如:_localVar

0

我猜你必须遵守你工作场所的编码标准,无论你个人是否喜欢它。也许将来有一天,你能够决定自己的编码标准。

就我个人而言,我喜欢数据库使用“fish_name”、“tank_id”等形式的名称来命名表和字段,而数据库模型的代码等效部分则是“fishName”和“tankID”。我也不喜欢使用“_fooname”命名,当“fooName”可用时。但我必须重申,这是主观的,不同的人会因为他们之前的经验和教育而有不同的好坏想法。


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