StyleCop and/or 通用风格指南?

StyleCop and/or a general style guide?

类似问题:Styleguide for C# and StyleCop: a complete document

好的,所以我正在为我们在 C# 中开发的应用程序在我的工作场所寻找某种样式控制。我最初只是计划制作一个风格指南(通过收集一些现有的风格指南并从中挑选合适的部分),但看起来 StyleCop 可能是一个很好的补充或替代风格指南。

所以,我的问题是:

  1. 风格指南的潜在问题是什么and/or StyleCop 那我有可能运行进去吗?
  2. 如果我使用 StyleCop,我希望风格指南有多相似?我想尝试 prevent/limit 两种方法之间的任何变化吗?我问是因为 如果 StyleCop 不强制执行它,那么它可能会被忽略(或者这不是什么大问题?)。
  3. 如果我使用的是 StyleCop,是否值得花时间和精力创建样式指南?
  4. 是否有任何值得研究的 StyleCop 替代品? (例如,具有非常好的替代方案 usability/customization 和 "could" 算是够用了吧 自己)。

编辑: 只是一点点背景,我的工作场所有一个 "software department" 现在才刚刚形成。有 3 名全职 c# 开发人员,3 名可能 touch/use/alter c# 代码的开发人员,一些文学士,没有官方测试人员。

在加入了一个 used/maintained/enforced 风格指南的团队,然后加入了一个使用 StyleCop 的团队之后,我的建议是只使用 StyleCop。这有几个原因:

  1. 它是 compile-time 可执行的。当涉及到像风格这样挑剔的东西时,这是一个 巨大的 优势。使用样式手册总是有灰色区域,但没有任何编译器错误。这将样式参数从 "This is wrong"/"No it isn't" 减少到 "Which should we prefer",这是(通常)更文明的参数。

  2. 如果您创建自己的风格,则需要有人(或你们所有人)成为人 "style cop",这是一项相当悲惨的工作。开发人员(以我的经验)往往不喜欢人们对他们提交的代码进行 "style adjustments",并且更不喜欢被告知要使他们的代码符合样式。这也很耗时,因为在代码审查期间审查是另一回事(你正在做那些,对吧?)。

  3. StyleCop 带有一组相当不错的默认规则,仅使用这些规则就可以让您匹配大多数其他 C# 代码库。当我使用我们自己的 in-house 样式手册时,所有 open-source 代码看起来都很陌生,因为我们使用了注释 headers、大写参数、一些匈牙利符号等。但是当我移动到 StyleCop-enforced 样式与默认规则集,一切看起来都很熟悉!

  4. 创建您的风格意味着您将花费大量时间 re-inventing 轮子,然后在出现边缘情况和参数时维护该轮子。这是一项 non-zero 的工作量,会占用大量时间;根据我的经验,开发人员会总是争论代码风格。

  5. 如果您不喜欢某些默认设置或需要添加 StyleCop 应忽略的缩写,它有一个不错的编辑器来配置您的规则集。

  6. 您可以编写自己的规则或使用其他人发布的规则。例如,我们团队中的一些人讨厌尾随空格,所以我包含 these rules 来强制执行。

就替代方案而言,我不知道有任何方案能像 StyleCop 一样无缝。我应该指出,我只将它与 Resharper/Visual Studio 一起使用,因此如果您有不同的环境,那么您的里程可能会有所不同。

您在工作场所可以做的最好的事情就是传授以下价值观:

  1. 识别 代码主体中的现有样式模式。
  2. 遵循 您对该代码主体所做更改的现有样式模式。

无论您从事的是什么项目,这种做法都会导致因样式问题而被退回的总体提交率最低。它还需要最少的风格指南中的解释。

除此之外,您可以专注于通过查看单个文件不太容易推断出的主题,例如代码库中使用的命名约定、有效的线程模型以及模块之间的交互高水平。

仅供参考,新的 StyleCop 分析器 NuGet 包是一项重大改进。您现在可以通过编辑项目的规则集(属性 -> 代码分析)来手动选择您的 StyleCop 规则(或仅使用默认选择)。

我刚刚发现他们甚至为追随黑暗面的团队制定了三个 "alternative" 规则...:-)

SX1101 - 不要 在本地呼叫前加上'this.'

SX1309 - 字段名称必须以下划线

开头

SX1309S - 静态字段名称必须以下划线开头