展开讨论

经验与复盘经验摘录 · 机器翻译

> 结果发现所有使用严格架构(n=3)模式的大项目,虽然“干净”,但代码却复杂得多,而且在看似应该简单的任务中运行速度非常慢。我上一份工作有一个Python代码库就是这样的。有很多模式,由那些想要正确做事的人实现,结果却成了一个又大又慢的混乱局面。在Python中(在JIT之前),你不能像在原生编译语言或JVM语言中那样随意行事。每一次间接层都会在解释器中执行。让我困扰的是这本书和其他关于应用架构的教条式书籍,它们会推动人们在一开始就把所有复杂性都嵌入进去,而不管需求如何,而不是根据实际需求来增加复杂性。你最终会实现你现在需要的复杂性和你不需要的复杂性。…

> 结果发现所有使用严格架构(n=3)模式的大项目,虽然“干净”,但代码却复杂得多,而且在看似应该简单的任务中运行速度非常慢。我上一份工作有一个Python代码库就是这样的。有很多模式,由那些想要正确做事的人实现,结果却成了一个又大又慢的混乱局面。在Python中(在JIT之前),你不能像在原生编译语言或JVM语言中那样随意行事。每一次间接层都会在解释器中执行。让我困扰的是这本书和其他关于应用架构的教条式书籍,它们会推动人们在一开始就把所有复杂性都嵌入进去,而不管需求如何,而不是根据实际需求来增加复杂性。你最终会实现你现在需要的复杂性和你不需要的复杂性。…

源讨论用Python实现的架构模式原帖 140 条评论 · 导入时统计
2

这条内容在回应什么?

父级讨论 · 节选

DA

这本书对于架构模式来说真是个宝藏。我喜欢它如何让人轻松进入一个主题并迅速掌握它。 不过,从实践和经验的角度来看,使用一些这些模式真的会导致复杂性和性能问题在Python中增加,特别是当你使用已经带有自己观点的框架如Django时,它已经使用了ActiveRecord模式。 我曾在大大小小的公司使用Python,有的使用架构模式,有的忽略它们。结果发现,所有严格使用架构模式(n=3)的大公司,虽然“干净”,但代码在看似应该简单的任务中变得过于复杂和低效。 而那些不关心这些模式的大公司,虽然有些地方的代码真的很难看(巨大的if-else文件/函数,巨大的Django模型,其中所有业务逻辑都实现其中)…

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 2

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

SL

> +100。 在 Python 中,模式和抽象会有巨大的成本。由于编译器的原因,它们在 C++ 中可以是零成本,或者由于 JVM 的 JIT 编译,成本非常低,但在 Python 中成本却非常显著,尤其是当你开始添加 I/O 操作或网络调用时。

完整原文
GL

> 这本书和其他关于应用架构的教条式书籍让我感到困扰的是,它们让人们倾向于在一开始就把所有复杂性都嵌入进去,而不管具体需求如何,而不是根据实际需求来增加复杂性。 问题是,如果你严格等到需要的时候才处理,那么基本上所有事情在实现之前都需要一定程度的重构。 理想的情况是,新功能只是新代码,而不是对现有代码的重构和修改。许多人已经习惯了这个想法。如果你在 Web 应用中添加一个新的“视图”,你不需要触碰任何其他视图,也不需要触碰 URL 路由逻辑。我认为更多的人更习惯于依赖框架来处理这类问题,而不是自己实现。 问题是框架无法了解你的业务。如果你需要可插拔的验证…

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。