我和我的同事一直在争论Pascal套管(上骆驼套)与低CamelCasing。它们用于降低骆驼外壳,从SQL数据库中的表名到C#代码中的属性命名,但我更喜欢Pascal外壳,更低的驼峰外壳用于变量和Pascal外壳用于属性:
string firstName;
public string FirstName {
...
}
但是他们习惯了这个:
string _firstname;
public string firstName {
...
}
我试着跟上他们的“标准”,所以代码看起来一样但我不喜欢它。
我已经看到至少.NET框架使用这个约定,这就是我试图保留我的代码,例如:
System.Console.WriteLine("string")
你用什么/喜欢什么?为什么?我很抱歉,如果有人问过这个问题,但我搜查了一下,没有找到任何东西。
更新:我给出了一个方法示例而不是属性,但它是相同的。正如我在第一段中所述,我的同事们使用Pascal约定(变量,方法,表名等)
我使用框架使用的内容,因为它是事实上的最佳实践。但是,只要您公司的代码始终如一地使用他们的风格,那么您最好习惯它。如果每个开发人员都有自己的标准,那么根本就没有标准。
实际上,这没有“标准”惯例。在某个地方有微软编辑的指南,和任何其他命名约定指南一样,肯定有另一个反驳它,但这就是我所理解的“标准C#套管惯例”。
实际上,FxCop将强制执行其中一些规则,但是(AFAIK)它会忽略您用于局部变量的任何拼写。
我喜欢Aardvark'd项目规范中规定的编码惯例
您发布的.NET示例是一个函数。方法/函数采用的“标准”是A capped-case(或Pascal,如果你想称之为)。
我尽我所能坚持骆驼的情况。它可以让您轻松了解变量和方法之间的区别。
另外,我喜欢在本地类变量前加上下划线。例如:_localVar
。
我退出编程的那一天 - 当微软将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,从不触摸它,任何年龄的孩子。
微软 - 永远或直到他们使用PascalCase。
无论你喜欢哪个都重要,显然主要是坚持团队的标准。私下您可以根据需要编写代码,无论您是将变量命名为someVariable还是SomeVariable,它都不会影响成品。
官方design guidelines的链接可能会有所帮助。具体来说,请阅读有关Capitalization styles的部分。
在宏大的计划中,Pascal与Camel并不重要,你不可能说服任何人只是为了改变名字的情况而回到现有的代码库。真正重要的是,您希望在给定的代码库中保持一致。
只要你不使用匈牙利语,我就很开心。
您应该查看Microsoft的新工具StyleCop来检查C#源代码。还要关注FxCop以检查已编译的.Net程序集。 FxCop更多地关注代码所做的细节,而不是布局,但它确实有一些与公开可见名称相关的命名规则。
StyleCop定义了一种编码标准,现在由Microsoft作为行业标准推广。它根据标准检查C#源代码。 StyleCop符合您的PascalCase风格。
让人们加入StyleCop(或任何其他标准)可能很难,这是一个很大的障碍,而StyleCop非常详尽。但是代码应该是一个统一的标准 - 个人标准总比没有好,公司标准优于个人标准,行业标准最好。
在项目开始时说服人们要容易得多 - 团队正在形成,并且没有现有的代码可以转换。如果代码不符合标准,你可以放置工具(FxCop,StyleCop)来破坏构建。
您应该使用语言和框架的标准 - SQL代码应该使用SQL标准,C#代码应该使用C#标准。
对于公共接口,您应该遵循MS .NET框架设计准则:“Capitalization Conventions”。
对于非暴露成员,那么您和您的同事可以达成一致意见。
我(和我的团队)更愿意为类名保留初始大写字母。
为什么?我认为Java标准正在传播。
从.NET Framework开发人员指南Capitalization Conventions,Case-Sensitivity:
资本化指南仅用于使标识符更易于阅读和识别。套管不能用作避免库元素之间名称冲突的手段。
不要以为所有编程语言都区分大小写。他们不是。名称不能仅因个案而异。
我刚刚找到了Coding Standards for .Net。
Pascal外壳应该用于Properties。至于变量名称,有些人使用_和一些人使用m_,有些人只使用普通的旧骆驼套管。我认为只要你在这里一致,就没关系了。
我想你必须忍受编码标准对你工作地点所说的内容,不管你个人不喜欢它。也许将来的某一天,您将能够决定自己的编码标准。
我个人喜欢数据库使用表格和字段“fish_name”,“tank_id”等形式的名称,而数据库模型的代码等价物是“fishName”和“tankID”。当“fooName”可用时,我也不喜欢“_fooname”命名。但我必须重申,这是主观的,不同的人会因为他们以前的经验和教育而对于好事和坏事有不同的看法。