【问题标题】:Looking for a configurable pretty printer for C# code为 C# 代码寻找可配置的漂亮打印机
【发布时间】:2008-11-13 02:48:01
【问题描述】:

我在一个大约有 10 名开发人员的团队中工作。一些开发人员有非常严格的格式化需求。我想找到一台漂亮的打印机,我可以根据这些规格进行配置,然后添加到构建过程中。这样,当从源代码管理中删除格式时,无论其他人将格式弄得多么糟糕,它看起来都可以接受。

【问题讨论】:

    标签: c# formatting pretty-print


    【解决方案1】:

    最简单的解决方案是让团队负责人指定一种格式,并且每个人都使用它。 VS 的默认设置相当不错。

    Jeff Atwood 在 Stack Overflow 上对我们这样做了,虽然我一开始反抗,但我克服了它 :) 让一切变得更容易!

    【讨论】:

    • 你们是使用 StyleCop 来执行规则,还是手动执行?
    【解决方案2】:

    编码标准绝对是我们拥有的东西。我正在谈论的编码格式是由一位头发花白的建筑师强加的,也就是说,以他的方式设置并且非常特别。让我们假装我们无法解决人为因素。我一直在寻找一种方法来规避整个人类过程。

    很遗憾,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# 工具链感到很满意。

    【讨论】:

      【解决方案3】:

      您的问题是创建NArrange(测试版)的主要目的。它允许对 C# 代码进行可配置的重新格式化,并且您可以使用一个通用配置文件供整个团队共享。由于它的重点主要是对类和控制区域中的成员进行重新排序,因此它仍然缺乏许多必要的格式化选项(尤其是成员代码行内的格式化)。

      正常的使用场景是每个开发人员在签入之前运行该工具。我不知道任何人运行它是他们构建过程的一部分,但没有理由你不能,因为它是一个命令行工具。我考虑过的一个想法是在文件上运行 NArrange 作为预提交步骤的一部分。如果签入的原始文件内容与源存储库服务器上的 NArrange 格式输出不匹配,则说明开发人员没有重新格式化为规则,可能会引发签入错误。

      有关更多信息,请参阅我在 Using NArrange to Organize C# Code 上的 CodeProject 文章。

      【讨论】:

      • 我每天都使用 NArrange。真的很棒。它现在与 async 关键字有点混淆,但在其他方面是保持文件有序的好方法。
      【解决方案4】:

      我赞同 Jarrod 的回答。如果您有 2 个开发人员的编码偏好相互冲突,那么让团队的其他成员投票,然后让老板支持多数决定。

      此外,尝试自动应用这样漂亮的打印机的问题在于,总会有一些例外情况,即您的一揽子编码标准不是最好或最易读的解决方案,您会因为用自动化工具。

      编码标准就是这样,标准。他们不称它们为编码法则或编码规则,这是有充分理由的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 1970-01-01
        • 2010-09-13
        • 2011-02-04
        • 1970-01-01
        相关资源
        最近更新 更多