我在一个有大约 10 名开发人员的团队中工作。一些开发人员有非常严格的格式化需求。我想找到一台漂亮的打印机,我可以根据这些规格进行配置,然后添加到构建过程中。通过这种方式,无论其他人在从源代码管理中删除格式时将格式弄得多么糟糕,它看起来都可以接受。
4 回答
最简单的解决方案是让团队负责人指定一种格式,并且每个人都使用它。VS 默认值非常好。
Jeff Atwood 在 Stack Overflow 上对我们这样做了,虽然我一开始反抗,但我克服了它 :) 让一切变得更容易!
您的问题是创建NArrange(测试版)的主要目的。它允许对 C# 代码进行可配置的重新格式化,并且您可以使用一个通用配置文件供整个团队共享。由于它的重点主要是对类和控制区域中的成员进行重新排序,因此它仍然缺乏许多必要的格式化选项(尤其是成员代码行内的格式化)。
正常的使用场景是每个开发人员在签入之前运行该工具。我不知道任何人运行它是他们构建过程的一部分,但没有理由你不能,因为它是一个命令行工具。我考虑过的一个想法是在文件上运行 NArrange 作为预提交步骤的一部分。如果签入的原始文件内容与源存储库服务器上的 NArrange 格式输出不匹配,则开发人员没有重新格式化为规则并且可能会引发签入错误。
有关更多信息,请参阅我关于使用 NArrange 组织 C# 代码的 CodeProject 文章。
编码标准绝对是我们拥有的东西。我正在谈论的编码格式是由一个头发花白的建筑师强加的,也就是说,以他的方式设置并且非常特别。让我们假装我们无法解决人为因素。我一直在寻找一种方法来规避整个人类过程。
遗憾的是,Visual Studio 的默认设置不能很好地解决换行问题。我只是在制作这条线切割风格,但是....
ServiceLocator.Logger.WriteDefault(string.format("{0}{1}"
,foo
,bar)
,Logging.SuperDuper);
格式化visual studio的另一个例子不太热......
if( foo
&& ( bar
|| baz
|| apples
|| oranges)
&& IsFoo()
&& IsBar() ){
}
Visual Studio 根本不能很好地播放这样的东西。我们目前正在使用 ReSharper 以允许更精细的格式化,但遗憾的是它在许多领域都属于分类。
尽管编码标准很棒,但不要误会我的意思。作为构建过程的一部分,漂亮打印机的目标是获得“完美”的代码,无论人们如何注意或计算他们的空间。
围绕代码格式化的边缘情况非常容易解决,因为它是一个定义明确的语法。
就 VS 默认设置而言,我只能说:BSD 风格或死亡!
所有这一切都让我回到了原点:C# 是否有可配置的漂亮打印机?就像词法分析和解析一样令人着迷,我对制作 YAML C# 工具链感到很满意。
我赞同 Jarrod 的回答。如果您有 2 个开发人员的编码偏好相互冲突,那么让团队的其他成员投票,然后让老板支持多数决定。
此外,尝试自动应用这样漂亮的打印机的问题在于,总会有例外情况,即您的一揽子编码标准不是最佳或最易读的解决方案,并且您会因使用自动化工具挤压它们而失败。
编码标准就是这样,标准。他们不称它们为编码法则或编码规则,这是有充分理由的。