【问题标题】:How do you resolve the discrepancy between "StyleCop C# style" and "Framework Design Guidelines C# style"?您如何解决“StyleCop C# 风格”和“框架设计指南 C# 风格”之间的差异?
【发布时间】:2010-09-30 09:49:40
【问题描述】:

在阅读好书“框架设计指南”(2008 年 11 月第 2 版)的附录 A“C# 编码风格约定”之后,我对微软内部使用/推荐的编码风格感到很困惑。

博客条目A Brief History Of C# Style 声称:

其实“StyleCop风格”和“Framework Design Guidelines风格”的区别比较小

在我看来,差异非常明显。 StyleCop 说开口大括号应该在单独的一行,框架设计指南说它应该在开始语句之后。 StyleCop 说所有关键字后面都要跟一个空格,框架设计指南说“去掉所有空格”(甚至在二元运算符周围)。

我发现《框架设计指南》一书中的这条规则特别具有讽刺意味(第 366 页,从顶部算起的第 6 条规则):

不要在流控制语句前使用空格

Right: while(x==y)
Wrong: while (x == y)

这明确说明 StyleCop 样式错误(while 关键字后有空格,等号二元运算符前后有空格)。

最后,使用 StyleCop 样式格式化的代码与使用 Framework Design Guidelines 样式格式化的代码有完全不同的“感觉”。通过遵循框架设计指南样式,您将不得不禁用一堆规则(并且没有检查是否遵守框架设计指南样式的规则......)。

有人(或许是 MSFT 内部人士?)能否阐明这种分歧?

您的团队是如何处理这个问题的?关注 StyleCop?框架设计指南?完全忽略风格?烘焙自己的风格?

【问题讨论】:

  • 好问题。我也想知道这个。

标签: c# coding-style conventions stylecop


【解决方案1】:

stylecop 团队的这篇文章准确地解释了我的想法。 http://blogs.msdn.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx

为了回答您问题的第二部分,我们的团队刚刚开始使用 StyleCop 并使用所有规则(有些人会挑选要使用的规则)。我唯一不喜欢的是它需要额外的时间,但是使用像 StyleCopForResharper 这样的工具可以让它更快。当人们编写的代码看起来与我编写的代码不同时,我曾经非常生气,但现在我们使用 StyleCop,每个人的代码看起来都一样。不用再为人们做的烦人事情咬嘴唇了

【讨论】:

  • 完全同意每个人都使用一种风格会更好。出于这个原因,我正在制作一个开源项目,其中的基本准则是它不能引发 StyleCop(或 FxCop)警告。这样每个人都在同一个页面上。即使我不喜欢某些规则,至少我不必与任何人争论,因为我也没有编写规则。就个人而言,我输入代码的时间比我思考写什么的时间要少得多,所以不管有没有 R#,这都是值得的。
【解决方案2】:

在我读到的一篇博客上(我似乎找不到网址),它是这样说的: 框架指南基于 C++ 指南并从其演变而来(他们都是经验丰富的 C++ 开发人员),而 stylecop 提供的指南是更现代的新 C# 指南... 两者都很好,自己做决定......我个人使用 StyleCop 的

【讨论】:

    【解决方案3】:

    我们对所有代码都使用 StyleCop,除了一些小问题之外,我认为它的大部分标准都导致了最易读的代码。它的许多标准已经在 Microsoft 内部进行了深入讨论,并得到了社区的反馈,虽然并不期望每个人都同意所有的事情,但它可能是最好的“标准”(特别是因为它允许自动使用 StyleCop for ReSharper 插件进行验证和自动更正)。

    如果有任何你强烈不同意的事情,维护该工具的 Jason Allor 非常愿意就某些事情提出建议,例如 StyleCop 最初坚持的自动属性...

    public int Prop
    {
        get;
        set;
    }
    

    ...但是我们提出了一个更改请求以允许单行属性(即一行中的所有内容),因为它的可读性不低并且占用的空间更少。他在几天内做出了这个改变。

    【讨论】:

      【解决方案4】:

      你做出决定。如果您喜欢其中的某些部分,而喜欢另一部分的某些部分,请编写自己的样式指南。如果你比另一个更喜欢一个,那就选择它。

      最重要的是选择一种风格;没有办法以任何严格的定量方式来评估彼此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-06
        • 2010-11-08
        相关资源
        最近更新 更多