c# 的编码风格有点独树一帜呀

2014-03-11 17:24:28 +08:00
 weakish
GitHub提供了一些分析数据的接口api,sideeffect.kr 利用这些api分析了托管在GitHub上的公开的C#代码,统计出了一些结论。

统计结果: http://segmentfault.com/a/1190000000430024


和别的语言有点不一样,c#的if等语句,大括号基本上都换行:

另起一行(84.961 %)

很多语言里都有是否另起一行的圣战。。。

常量命名,一般语言,大部分是全大写,但是c#是三足鼎立:

驼峰(35.304 %)

全大写(32.093 %)

其他 (32.603 %)

----

有 C# coder 熟悉这背后的原因么?或者讲讲你自己惯用的风格?
7148 次点击
所在节点    程序员
32 条回复
cxe2v
2014-03-11 17:36:21 +08:00
你第一次看到的代码长什么样,基本上你以后的风格就定那样了
jsonline
2014-03-11 17:47:51 +08:00
这很重要么
zhujinliang
2014-03-11 17:54:02 +08:00
C#大括号占一行是VS IDE自动格式化的,因为微软有给力的IDE,绝大多数C#程序员都用VS开发。占少部分的可能是Mono派。

变量/类命名一般是驼峰,常量是全大写,这个一般是从C过来的,IDE没有帮忙格式化
solo7net
2014-03-11 17:55:07 +08:00
用过VS就知道 你写个if 按下tab
caoyue
2014-03-11 18:01:33 +08:00
我猜那篇文章提出的大多数现象的归根到底都是——C# 程序员更多的使用 VS ?
VS 自动格式化的结果完全符合这些规律
而常量命名刚好是 VS 格式化不涉及的,大家就各显神通了

而且 .NET 的源码风格也是不统一的,比如 if、 class 的花括号有时候换行有时候不换行
tonghuashuai
2014-03-11 18:13:31 +08:00
我写的时候就是按 VS 推荐的格式,大括号单独占一行……
xuan_lengyue
2014-03-11 18:21:05 +08:00
因为 VS 里面花括号默认就是单独一行的,而写 C# 的应该基本上都用的是 VS 吧。。。
最近在写 C#,大量的判断是否为 null,要是不判断很容易就来个 Null Pointer Exception。。。
这到底是 C# 问题还是我自己的问题。。。
vibbow
2014-03-11 19:00:54 +08:00
因为VS默认就是这样的...
min
2014-03-11 19:01:10 +08:00
@xuan_lengyue 你代码的问题
Ricepig
2014-03-11 19:50:59 +08:00
@xuan_lengyue 这类语言就这样,Null是需要判断的。不过实际上也没什么别的好办法,ruby那样给个默认值有的时候更容易出了问题不知道。
wingoo
2014-03-11 19:54:11 +08:00
写过几年cs
大括号之类的一般都单独一行
命名用驼峰, 常量大写

@xuan_lengyue 对外接口一般都判断再判断, 内部自己用的函数, 注释上写个约定
AstroProfundis
2014-03-11 20:46:26 +08:00
因为 Visual Studio 的默认设置就是这样的,会自动格式化代码;可以自己修改,比如我就改成不换行了...
maddemon
2014-03-11 21:12:23 +08:00
C#命名规范:
私有字段 _xxYyZz
局部变量、参数名 xxYyZz
方法名、类名、公开属性、常量、只读变量 XxYyZz
接口 IXxYyZz
maddemon
2014-03-11 21:13:02 +08:00
纠正:只读变量->只读字段
Linxing
2014-03-11 21:22:11 +08:00
VS是会自动大括号单独一行的吧,还有自动加空格之类的,导致现在看到大括号没有单独一行的,都要改一下,强迫症了。。
NauhiL
2014-03-11 21:37:19 +08:00
@xuan_lengyue VS不会自己判断变量是否为空,需要自己写个公共方法去判断对象或者变量是不是null
ooh
2014-03-11 21:39:05 +08:00
论:使用文本编辑器对你人生代码风格的影响
rebornix
2014-03-11 22:27:27 +08:00
我基本按照Resharper的要求来命名,IDE帮忙format code确实便于代码阅读。
zhujinliang
2014-03-11 23:55:46 +08:00
@Ricepig 印象中没有这么严重啊。很多情况下可以考虑使用try catch进行简单处理,不管它是返回了什么,只要后面哪个不高兴了给出个exception,直接catch了走错误处理路线
tangzx
2014-03-12 00:57:44 +08:00
.NET2001年才出来,完全没有历史负担,所以.NET内裤的命名规范异常统一

其他的基本上各种历史原因什么unix什么c什么大神什么xxxxnic当然宗教战争啦

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/103836

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX