用于C#代码的Pascal外壳或Camel外壳?

时间:2008-09-29 16:30:21

标签: c# .net naming-conventions standards

我和我的同事一直在争论Pascal套管(上骆驼套管)与下部CamelCasing。它们用于降低骆驼外壳,从SQL数据库中的表名到C#代码中的属性命名,但我更喜欢Pascal外壳,更低的驼峰外壳用于变量和Pascal外壳用于属性:

string firstName;
public string FirstName {
...
}

但他们习惯了这个:

string _firstname;
public string firstName {
...
}

我试着跟上他们的“标准”,所以代码看起来一样,但我不喜欢它。

我已经看到至少.NET框架使用这个约定,这就是我试图保留我的代码的方式,例如:

System.Console.WriteLine("string")

你用什么/喜欢什么?为什么?我很抱歉,如果有人问过这个问题,但我搜查了一下,但没有找到任何东西。

更新 我给出了一个方法示例而不是属性,但它是相同的。正如我在第一段中所述,我的同事们使用Pascal约定来处理所有内容(变量,方法,表名等)

14 个答案:

答案 0 :(得分:37)

指向官方design guidelines的链接可能有所帮助。具体来说,请阅读Capitalization styles上的部分。

在宏大的计划中,Pascal与Camel并不重要,你不可能说服任何人只是为了改变名字的情况而回到现有的代码库。真正重要的是你希望在给定的代码库中保持一致。

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

答案 1 :(得分:32)

我使用框架使用的内容,因为它是事实上的最佳实践。但是,只要您公司的代码始终如一地使用他们的风格,那么您最好习惯它。如果每个开发人员都有自己的标准,那么根本就没有标准。

答案 2 :(得分:16)

您应该查看Microsoft的新工具StyleCop来检查C#源代码。 还要关注FxCop以检查已编译的.Net程序集。 FxCop更多地关注代码的细节,而不是布局,但它确实有一些与公开可见名称相关的命名规则。

StyleCop定义了一种编码标准,现在由Microsoft作为行业标准推广。它根据标准检查C#源代码。 StyleCop符合您的PascalCase风格。

让人们加入StyleCop(或任何其他标准)可能很难,这是一个很大的障碍,而StyleCop非常详尽。但是代码应该是一个统一的标准 - 个人标准总比没有好,公司标准比个人标准好,行业标准最好。

在项目开始时说服人们要容易得多 - 团队正在形成,并且没有现有的代码可以转换。如果代码不符合标准,你可以放置工具(FxCop,StyleCop)来破坏构建。

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

答案 3 :(得分:7)

对于公共接口,您应该坚持使用MS .NET框架设计 指南:“Capitalization Conventions”。

对于非暴露成员,无论你和你的同事能达成什么协议。

答案 4 :(得分:3)

我(和我的团队)更喜欢为课程名称保留首字母大写字母。

为什么呢?我认为Java标准正在传播。

答案 5 :(得分:1)

从 .NET Framework开发人员指南 Capitalization Conventions,案例敏感度:

  

存在资本化指引   仅仅是为了使标识符更容易   阅读并认识。套管不能   用作避免名字的手段   库元素之间的冲突。

     

不要假设所有编程   语言区分大小写。他们是   不。名称不能因情况而异   单独

答案 6 :(得分:1)

我刚刚找到Coding Standards for .Net

答案 7 :(得分:0)

Pascal外壳应该用于属性。至于变量名称,有些人使用_和一些人使用m_,有些人只使用普通的旧骆驼套管。我认为只要你在这里一致,就没关系了。

答案 8 :(得分:0)

您发布的.NET示例是一个函数。方法/函数采用的“标准”是A capped-case(或Pascal,如果你想称之为)。

我坚持骆驼的情况。它可以让您轻松了解变量和方法之间的区别。

此外,我喜欢在本地类变量前面加上下划线。例如:_localVar

答案 9 :(得分:0)

我想你必须忍受编码标准对你工作地点所说的内容,不管你个人不喜欢它。也许将来有一天你将能够决定自己的编码标准。

我个人喜欢数据库使用表格和字段“fish_name”,“tank_id”等形式的名称,而数据库模型的代码等价物是“fishName”和“tankID”。当“fooName”可用时,我也不喜欢“_fooname”命名。但我必须重申,这是主观的,不同的人会因为他们以前的经验和教育而对于好事和坏事有不同的看法。

答案 10 :(得分:0)

实际上,对此没有“标准”惯例。在某个地方有微软编辑的指南,和任何其他命名约定指南一样,肯定有另一个反驳它,但这就是我所理解的“标准C#套管惯例”。

  1. PerWordCaps类型名称(类,枚举),常量和属性。
  2. camelCase用于非常长的局部变量和受保护/私有变量
  3. 没有ALL_CAPS 永远(好吧,只在编译器定义,但不在您的代码中)
  4. 似乎有些系统类使用下划线名称(_name)作为私有变量,但我想这来自原始作者的背景,因为大多数系统类直接来自C ++。另外,请注意VB.NET不区分大小写,因此如果扩展类,则无法访问受保护的变量。
  5. 实际上,FxCop会强制执行其中一些规则,但是(AFAIK)它会忽略您用于局部变量的任何拼写。

答案 11 :(得分:0)

我喜欢Aardvark'd项目规范

中列出的编码惯例

答案 12 :(得分:-2)

我退出编程的那一天 - 当微软将C#中的CamelCase作为标准时。因为我的成长逻辑有很多PascalCase的原因,不像孩子的逻辑,谁只关心较短的名字或更容易写。

而BTW:CamelCasing主要来自C ++ STD库样式,继承自C的本机旧语言。所以Java继承自C ++。但是C# - 完全是新语言 - 清洁和美丽,有了新的规则。 Oldfags必须在Java或C ++上编程,新一代人必须在C#上编程 - 而且他们永远不应该互动。

考虑这个例子: 1)PascalCase:list.Capacity.ToString(); 2)CamelCase:list.capacity.toString();

在(1)中我们有长期的CAMEL CASE!表示listCapacityToString。 在(2)中我们有废话:listcapacitytoString。

这就是我的阅读方式。为什么CamelCase对itselt来说是不合逻辑的。我可以杀死PascalCase,从不接触它,任何年龄的孩子。

Microsoft - 永远或直到他们使用PascalCase。

答案 13 :(得分:-2)

无论你喜欢什么都是重要的,显然主要是坚持团队的标准。 私下你可以根据需要编写代码,无论你是将变量命名为someVariable还是SomeVariable,它都不会影响成品。