我认为这取决于整个项目的最终规模。
在一个极端情况下,假设您有一个1 Mloc项目。对于这么大的项目,在所有涉及的领域中不可能只有一个人成为“专家”。因此,在这种情况下,我将坚持使用每个主要组件的现有代码样式。新的开发人员会选择一个领域,并从中学到这一点,他们不太可能看到许多其他具有不同代码风格的组件。
如果项目是小了很多,它是可能有个人了解整个代码库,那么我会选择一个主要的代码风格,并坚持这一点。在这种情况下,我认为整个项目的一致性更有意义,因为新开发人员很可能会在项目的所有领域工作。
中型项目可能是最难做出此决定的项目。在这种情况下,您必须权衡每种方法的成本,并确定您认为长期最便宜的方法。挑战在于,中型项目通常已经增长到足以使完整的样式重构看起来过于昂贵的地步。您可能需要再看一下代码树结构,以查看是否可以安排将特定代码样式组合在一起的事情。
无论哪种方式,最终的决定权都应由您所在的团队来决定,这是将这个计划打包在一起的原因。
一些离群值可能使我的推理从上往下偏离:
如果一个或多个模块具有令人讨厌的风格,那么即使在较大的项目中也无法保持这种风格。是的,风格是主观的,但是如果您和您的项目参与者确实非常不喜欢特定区域的流动方式,那么请破坏旧风格并为其提供更好的风格。
如果所有样式都相当接近,那么声明“这是新方法”并将其用于所有新代码和重要的重构可能同样容易。这可能会使评论有些痛苦,但是以我的经验,大多数人都很有能力适应这种方法。它还提供了旧代码在哪里的告示标记。
有时,样式会根据添加到语言中的新功能而改变。多年来,C ++拥有许多功能。可以根据需要将旧样式重构为利用这些功能的新样式。
一些库可能具有特别的惯用方法或风格。如果是这样,即使该库可能与项目的其余部分发生冲突,我也会坚持使用该库的样式。这样做的目的是增加frobnosticators
从事其他项目的人也会参与您的项目的几率。
一些评论提到命令式和面向对象的样式是一个考虑因素。
如果模块是中型或更大,则特定样式中“较重”的模块可能应该保持这种状态。我使用了三种主要样式(命令式,目标式和功能性),并将重的命令式样式重构为OO样式。使用中等或大量代码,重构可能会(异常)困难。我的经验很困惑,因为我没有任何工具支持来协助重构。
我可以想象,在命令式样式丰富的模块与那些特定于特定开发环境的惯用模块之间存在高度相关性,这可以追溯到我提出的离群值。因此,您将找到的用于该功能的任何模块都将看起来像这样,并且您希望该领域的专家也能够轻松地在您的项目中工作。但是,如果有选项,而您的团队不喜欢该模块的样式,那么我将调查这些选项。
同样,我使用的是重型OO样式的模块,在该模块中,OO原则被推到太远而使用不正确。例如,接口被用作多重继承的替代品。如您所料,这是一个粗略的实现。我能够在重构该模块方面取得合理的进展,但是最终我放弃了这种方法,因为我发现可以使用更好的软件包。