强制编码风格是一个长期被热烈争论的话题人们不仅为团队应该遵循何种编码风格而争论不休同时还要争论究竟是否应该确立一个标准的编码风格现在微软发布了StyleCop这是他们在内部使用的一个编码风格强制工具微软的这一举措无疑将起到推波助澜的作用 StyleCop也即所谓的微软C#源代码分析器(Microsoft Source Analysis for C#)用途和FxCop相似只不过作用对象是源代码此外它和FxCop一样是源于微软的内部工具在发展到一定程度之后微软觉得对其他人也有 用于是被公开发布不过StyleCop的自定义程度不如FxCop那么高 Jason Allor声称由这个工具所强制要求的大约条规则与Visual Studio的默认设置是兼容的遗憾的是他忘记提到Visual Studio具有个完全不同的默认设置集合其中多数与这个工具互相矛盾的 这个工具涉及的方面包括支持文件内容调试文本编排元素头和文件头中的文档格式元素语句表达式和查询子句的布局行空格元素字段和变量的命名大括号圆括号方括号等的位置在方法声明或方法调用中方法参数的位置关键字和操作符周围的空格在类中元素的标准顺序访问修饰符的使用内置类型的使用在空白的控制台应用程序上运行这些规则会返回个错误如果你打开Keep Tabs设置则会出现个错误一些规则稍显笨拙例如要求using指示符必须放在命名空间内而不是放在文件顶部 已经有人在抱怨这个工具缺乏校正的支持Dustin Norman写道在将这个工具运行在一个较小的程序集上时这个工具要我手动修改个违规错误而它却不能在不影响代码语义的基础上自动为我修复错误——这真的要让我崩溃了! 古老的tabs vs spaces争论「译者注即代码的缩进是用Tabs来实现还是用Spaces来实现」又被提及而且我们还不能禁用这一规则Nick Berardi写道真是开玩笑Tabs居然不被允许相反只能使用空格这个主意糟透了因为它会破坏语句块的布局例如一个变量使用个空格而其他变量则使用了个无论如何应该允许禁用类似tab规则这样毫无意义的规则 如 果能够禁用这些规则这个工具就更好了我知道你会说他们已经够好了 但是我完全不同意使用空格来代替tab这是毫无逻辑可言的或许只有在Vi编辑器 第一次出现从而引发了开发人员之间的圣战可堪比拟吧我喜欢用Tab的方式编写我的代码但它总是警告我我的每行代码都有tab在其中 同时Daniel Stolt也问到了关于VB的情况为NET开发人员提供一些额外工具总是受欢迎的——但为什么只有C#的?代码格式的强制规则对于VB开发人员来说也是非常需要的 显然VB代码编辑器在对关键字和操作符进行缩进和空格的处理中已经具有自动格式化的一些初步支持但还不够接近StyleCop所支持的效果 顺便说来我完全同意Nick Berardi对于tabs vs spaces的观点使用tabs有什么问题?难道按次方向按钮比直接指向某个位置更有某种优势?还是在源代码文件中保存个空白字符存在着某种好处? |