• 请不要在回答技术问题时复制粘贴 AI 生成的内容
weakish
V2EX  ›  程序员

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

  •  
  •   weakish ·
    weakish · Mar 11, 2014 · 8545 views
    This topic created in 4626 days ago, the information mentioned may be changed or developed.
    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 熟悉这背后的原因么?或者讲讲你自己惯用的风格?
    32 replies  •  1970-01-01 08:00:00 +08:00
    cxe2v
    cxe2v
    Mar 11, 2014
    1
    你第一次看到的代码长什么样,基本上你以后的风格就定那样了
    jsonline
    jsonline
    Mar 11, 2014 via Android
    2
    这很重要么
    zhujinliang
    zhujinliang
    Mar 11, 2014❤️2
    3
    C#大括号占一行是VS IDE自动格式化的,因为微软有给力的IDE,绝大多数C#程序员都用VS开发。占少部分的可能是Mono派。

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

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

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

    其他的基本上各种历史原因什么unix什么c什么大神什么xxxxnic当然宗教战争啦
    zkd8907
    zkd8907
    Mar 12, 2014
    21
    @rebornix Resharper真心好用,就是资源吃太多了。
    rebornix
    rebornix
    Mar 12, 2014
    22
    @zkd8907 或者乃也可以试试打开stylecop,坐看自己的project被爆
    zkd8907
    zkd8907
    Mar 12, 2014
    23
    @rebornix 我才不要自虐,而且我写的代码尤其是注释,里面连颜文字都有,被干是必须的。
    soli
    soli
    Mar 12, 2014
    24
    空格缩进的竟然 80% 以上了。。。
    理解不能。
    rainysia
    rainysia
    Mar 12, 2014
    25
    5年前写c#的时候用过SharpDevelop... 现在主力gvim
    soundbbg
    soundbbg
    Mar 12, 2014
    26
    说实话这个还是看团队风格,团队风格看团队水平。有很多东西其实也没有那么重要。
    imwower
    imwower
    Mar 12, 2014
    27
    使用vs默认的就最好,省去制定规范的时间了。其他语言也应如此。
    foxidea
    foxidea
    Mar 12, 2014
    28
    IDE 已经规范好了代码风格,不需要再 过多的精力去关注代码风格,vs 很赞
    Narcissu5
    Narcissu5
    Mar 12, 2014
    29
    微软出过一个C#代码规范,我记得有两条就是大括号另起一行,if while后面的语句即使只有一行也要括起来。

    @xuan_lengyue C# 6 会有monad

    foo?.foo1?.foo2?

    任何一个为空都返回null
    dieaz5
    dieaz5
    Mar 12, 2014
    30
    我就是c#的,基本上,c#的都是vs惯出来的
    msg7086
    msg7086
    Mar 12, 2014
    31
    VS+Resharper
    weakish
    weakish
    OP
    Mar 13, 2014
    32
    @soli [tab和空格缩进被认为是永恒的圣战](http://www.jwz.org/doc/tabs-vs-spaces.html) 不过现在大多数人都是空格缩进了(不论使用什么语言)。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4503 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 96ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
    ♥ Do have faith in what you're doing.