14

在浏览了伟大的书“框架设计指南”(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?框架设计指南?完全忽略风格?烘焙自己的风格?

4

4 回答 4

9

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

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

于 2009-04-22T18:49:25.757 回答
6

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

于 2009-01-09T01:00:35.153 回答
2

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

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

public int Prop
{
    get;
    set;
}

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

于 2009-01-09T00:59:00.710 回答
1

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

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

于 2009-01-09T00:52:38.350 回答