CodeMaid与Stylecop在代码组织方面的使用区别

27

我使用StyleCop很长时间了(也习惯了它)。我的一个朋友推荐我也尝试一下CodeMaid。我注意到的第一件事是usings的组织方式不同。

Stylecop按字母顺序排列usings,其中System usings首先列出,非System usings列在下面。

CodeMaid也按字母顺序排列usings,但它不会首先排列System usings。它只按照字母顺序排列usings

我遇到的另一件事是,CodeMaid允许您在命名空间之外使用usings(据我所知,最好将所有usings放在命名空间内)

我想问一下usings的正确排序方法以及为什么?


1
坦率地说,我会相信StyleCop - MS品牌/工具。它是内部开发的,然后在几年前公开发布,因此建议自然地融入了StyleCop中。我想这更取决于您的需求,但就个人而言,我会选择StyleCop。 - Ahmed ilyas
1
可能是c# using namespace statement ordering的重复问题。 - Jeff Siver
使用指令的顺序并不重要;使用指令的位置也不重要。事实上,如果您在 MSDN 上进行一些研究,它们被称为使用指令是有原因的;它们向编译器提供信息,但不会显示在 IL 中。 - Jeff Siver
2个回答

64

免责声明:我是CodeMaid的作者。

  1. 对于系统using语句应该排在第一位,Microsoft在Visual Studio 2012中改变了默认偏好设置,因为他们开始推出“Windows”程序集。更多细节请参见:Using Directives Sorted in Wrong Order

您可以在"工具->选项->文本编辑器->C#->高级->"排序using时优先考虑'System'指令"中轻松将其更改回VS2010的默认设置。 CodeMaid尊重Visual Studio定义的偏好设置,默认情况下不会将System指令放在第一位。

  1. 对于使用语句位于命名空间内部,我们计划支持https://trello.com/c/CLRxsIyc。StyleCop可能会将其声明为标准,但如果您查看MSDN示例、Visual Studio模板等,您会发现将using语句放到命名空间外部更加常规。关于这个问题存在很多争议,我们的目标是支持两种方法。

希望能够帮到您。:)


3
很高兴听到这两个消息,Steve。 +1 - Kajiyama

7
没有“正确”的顺序,只有约定俗成的规则。Stylecop的SA1210规则明确规定System命名空间应该放在最前面:

当using指令没有按照命名空间字母顺序排序时,就违反了这个规则。把using指令按字母顺序排序可以使代码更清晰易读,也可以帮助识别代码使用的命名空间。然而,System命名空间是这条规则的例外,总是排在其他命名空间之前。请参见SA1208了解更多细节。

规则SA1208表明System命名空间必须放在其他命名空间之前,原因是:

将所有System using指令放在using指令的顶部可以使代码更整洁易读,也可以帮助识别代码使用的命名空间。

Stylecop的规则是一种约定,而Codemaid选择了稍微不同的约定。选择你喜欢的规则并继续做出更重要的决策。

请参考此问题,了解关于在命名空间外使用 using 语句的内容。


谢谢提供链接,我知道它并且几年前就已经阅读过了,因此我才提到“据我所知”的部分。 - Kajiyama

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接