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

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

  •  
  •   weakish ·
    weakish · Mar 11, 2014 · 8105 views
    This topic created in 4468 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
        1
    cxe2v  
       Mar 11, 2014
    你第一次看到的代码长什么样,基本上你以后的风格就定那样了
    jsonline
        2
    jsonline  
       Mar 11, 2014 via Android
    这很重要么
    zhujinliang
        3
    zhujinliang  
       Mar 11, 2014   ❤️ 2
    C#大括号占一行是VS IDE自动格式化的,因为微软有给力的IDE,绝大多数C#程序员都用VS开发。占少部分的可能是Mono派。

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

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

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

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

    @xuan_lengyue C# 6 会有monad

    foo?.foo1?.foo2?

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