【问题标题】:Can SOLID principles be used for high-performance code? [closed]SOLID 原则可以用于高性能代码吗? [关闭]
【发布时间】:2021-03-27 18:27:49
【问题描述】:

我曾经在一个专门研究高性能 C++ 代码的团队工作。为了从代码中榨取每一点性能,使用了不明显和微妙的技巧,使其难以阅读。 Robert C. Martin 的“清洁架构”一书提倡 SOLID 架构原则:通过依赖倒置、单次使用原则等来解耦代码。额外的层和严格遵守接口似乎会妨碍某些技术以获得更好的性能。是否必须在高性能和 SOLID 架构之间做出选择?

【问题讨论】:

标签: performance architecture solid-principles


【解决方案1】:

是否必须在高性能和 SOLID 架构之间做出选择?

当然,这个问题的唯一明智答案是,这取决于您所说的高性能。但这个答案意味着 SOLID 和性能在某种程度上是相关的。

公平地说,OOP 原则和模式一般关注性能,即它们的目的不是为了提高甚至保持任何特定的性能水平。甚至可以公平地说,实现这些 OOP 目标的最常见机制会降低大多数常见 OO 语言的性能(尽管略有下降)。

另一方面,在大多数有关这些做法的文档中,性能并不是一个特定目标,这也是公平的。所以没有什么可以阻止您将它们调整为性能关键的应用程序。

我发现稍微修改问题以激发有趣的答案很有用。例如,

超优化代码是否与允许做出某些性能让步的代码一样具有可读性?

显然不是。可读性、可维护性、可扩展性等不是免费的。为什么应该这样?软件工程没有免费的午餐。一切都是取舍。如果你不能牺牲一盎司的性能,你为什么要期望最高的代码质量?性能是机器的语言。质量是人类的语言。这两者之间总会存在阻抗不匹配。

你不应该做的一件事是得出结论,如果违反原则可以提高绩效,那么原则可以被忽略。很少能找到以性能为主要关注点的应用程序。在人们认为是的大多数应用程序中,事实并非如此。即使在性能至关重要的应用程序中,它也不是唯一的问题。例如,如果计算错误,瞬时计算就没有什么价值。当普通程序员无法理解计算时,计算错误的可能性更大。

软件工程中的一切都是权衡。只是不要将相对值与绝对值混淆。标题的答案是,但您可能需要确定您应用了哪些原则以及在何处应用。性能并不能免除您对质量的考虑。它只会让您的工作更加复杂,因为除了质量之外,您还必须考虑性能

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2017-01-04
  • 1970-01-01
  • 2010-10-07
相关资源
最近更新 更多