答案很简单。
一致性至关重要。
但它有一个警告...
您和您的同事可能会迷恋于错误的一致性
实施是一次性的。根据测试套件的质量和全面性,可以轻松地对它们进行彻底检修。担心诸如“这应该是一个属性吗?”,“稀疏代码不应该使用LINQ而不是较低级的构造吗?”之类的东西。具有可疑的价值。很难将任何度量与实现级别的一致性值联系起来。在这个级别上要问的一个更好的问题是“此代码是否按宣传的方式工作?”。TL; DR实施的一致性是“小脑子”开始研究霍布林的地方。
为什么一致性在这里不那么重要?实现通常只有很少的贡献者。大多数方法都是书面的,永远不会被触及。在剩下的代码中,几乎可以肯定有两个贡献者的方法的数量是大多数。这种模式是无限的。在这种情况下,一致性并不是那么重要。如果代码的保存期限非常短(几年),那么从积极的一致性中获得收益可能就不是一个重要因素。
这并不是说您应该在实现中发疯。与其说是一种好,干净,简单的设计,不如说一种愚蠢的锅炉板一致性方法,对您的假设未来维护者而言将有价值几个数量级。这将我们带到了真正的意义...
API不是一次性的。
这是所有API代码级别,Web服务,SDK等。这些必须,必须,必须保持一致。由于多种原因,这种一致性带来的生产力提高是巨大的:
集成测试:
如果您保持API的一致性,则可以创建集成测试套件。这些使开发人员可以自由交换实现细节并立即进行验证。想要将您的同事废话换成LINQ吗?集成测试是否运行?在准备投入生产时,它还提供了验证。由于计算机速度很快,因此一台笔记本电脑可以执行数千名执行日常任务的测试人员的工作。它等于大大增加了组织的员工人数。
生产率
当API保持一致时,您只需遵循已了解的使用API其他部分的知识,就可以猜测如何使用API。这是因为API提供了自然,一致的“外观”。这意味着您的客户花费在筛选文档上的时间更少。入职更容易,更便宜。向开发API的人员询问的问题更少。一致性使每个人都是赢家
为什么一致性在这种情况下很重要?因为API具有与实现完全相反的问题。使用它们的人数通常远远大于为其实现做出贡献的人数。由于保持一致性而产生的小收益将成倍增加,并且要摊销保持这种一致性的成本。
结论
一致性很昂贵。从表面上看,它降低了生产率。它限制了开发人员,使他们的生活更加艰难。它限制了他们解决问题的方式,有时会迫使他们以非最佳方式解决问题。这通常是由于他们不了解,构思不当或他们不了解合同(较大的组织或组织间政策)的原因。
Raymond Hettinger在他的Pycon 2015演讲中谈到了为Python程序员团队使用PEP8样式指南的观点。他表明,对一段代码的风格一致性的痴迷使代码审阅者错过了严重的逻辑和设计缺陷。他的假设可以概括为发现风格上的矛盾很容易。确定一段代码的真实质量很难
这一点很关键。确定一致性的重要位置并积极保护它。不重要的地方不要浪费时间。如果您不能提供一种客观的方法来衡量一致性的价值(在上述情况下为“有效员工数”,成本是生产力的函数),并且您无法证明回报是可观的,那么您可能会损害您的组织。