更新代码库以满足标准

时间:2010-08-27 09:32:31

标签: c++ refactoring coding-style

如果您的代码库在编码标准方面有点混乱 - 来自不同人的不同约定的混合 - 让一个人完成遍历每个文件并将其提交以满足的任务是合理的标准?

除了非常沉闷之外,你还会得到SVN(或其他)的大量变化,这会使比较版本变得更难。在整个代码库中设置某人是否明智,或者仅仅触摸文件 以使其符合标准是愚蠢的?是否应该保留文件,直到需要进行某些“真正的”更改,然后更新?


标记为C ++,因为我认为不同的语言有不同的自动化工具。

4 个答案:

答案 0 :(得分:1)

  

是否应该保留文件,直到需要进行某些“真正的”更改,然后更新?

这就是我要做的。

即使主要是文本布局发生变化,通过大规模的手动过程进行更改也有可能破坏正在运行的代码。

将其视为重构,并在出于某些其他原因需要触摸代码时在本地执行此操作。如果缺少测试,则添加测试以提高不破坏代码的可能性。

如果您的代码已经被测试完全覆盖,那么您可能会使用全局的东西,但我仍然不会提倡它。

我也认为这与语言无关。

答案 1 :(得分:0)

  

我认为这是一项任务,你可能会给一个工作经验的孩子或者把它放到RentaCoder上

这主要取决于代码库的大小。

我已经看到三名学员完成了通过2MLoC代码库(数千个源文件)的任务,以便在所有源文件的顶部插入一个新行到标准免责声明 (行的内容取决于文件的名称和路径)。他们花了几天时间。三个中的一个大部分时间用来编写一个可以执行此操作的脚本,后来只修复了脚本无法正确插入行的文件,其他两个只是修复了文件。 (后来编写剧本的人在那家公司找到了工作。)

手动调整该代码库中的所有文件到某些编码标准的工作可能需要以人年来衡量。
OTOH,如果它只是几十个文件,那肯定是可行的。

您的代码库很可能位于介于两者之间的某个位置,因此您最好的选择是设置一个“工作体验小子”,以确定是否有一个工具可以让您满意,如果是这样,可以使其工作。

  

是否应该保留文件,直到需要进行某些“真正的”更改,然后更新?

我强烈建议不要这样做。如果你这样做,你将会发生“真正的”变化,与重新格式化发生混合,几乎不可能看到“真正的”变化。差异。

答案 2 :(得分:0)

它还取决于您计划进行哪些更改以使其达到您的编码标准。每个人对编码标准的定义都不同。

更具体地说:

  • 您是否可以对项目进行修改,100%保证整个项目的工作方式与以前完全相同?例如,仅影响注释,换行符和空格的更改应该没问题。
  • 如果您没有100%保证,那么除非可以与福利保持平衡,否则不应该承担风险。例如,是否需要深入了解当前的代码库以继续开发或修复其错误?编码惯例的混乱是否阻碍了这些举措?如果是这样,请评估成本和收益,并确定改造是否合理。
  • 如果您需要了解当前的代码库,这里有一种技术:跟踪。
    • 复制代码库。请注意,跟踪涉及添加代码,因此不应在生产副本上执行。
    • 在新副本中,将许多fprintf(跟踪)语句插入任何被认为是关键的函数中。可以自动执行此操作。
    • 使用各种输入运行项目并收集这些跟踪结果。这将有助于每个人了解当前项目的设计。
  • 了解当前代码库的另一种技术是记录项目中的依赖项。
    • 某些类型的依赖项(接口依赖项,C ++包括依赖项,C ++ typedef / identifier依赖项)可以通过自动化工具提取。
    • 只能通过跟踪或分析工具提取运行时依赖性。

答案 3 :(得分:0)

您可以非常轻松地解决编码风格的格式问题。有许多tools可以自动格式化您的代码。我建议将其中一个连接到您的版本控制工具的“签入”功能。这样,人们可以在编辑代码时使用他们想要的任何格式,但是当它被签入时,它会被重新格式化为官方样式。

总的来说,我认为如果你能同时做出重大改变,那将是最好的。在过去,我们已经完成了以下工作: 1.当大多数人不工作时(例如在晚上或周末),有时间专门用于重新格式化 2.让一个人在那时签出尽可能多的文件,重新格式化,然后重新检查

使用仅重新格式化的修订版,除了格式化之外,您不必弄清楚已更改的内容。