设计模式何时会使您的软件变得更糟?

mag*_*gol 16 design-patterns anti-patterns separation-of-concerns

设计模式何时会使您的软件变得更糟?

我见过一个程序,他们使用GUI和逻辑之间的Facade模式.他们认为没有任何对象可以通过它传输,因此只使用原始类型,这使得编码变得困难.

Cha*_*ana 21

当你滥用它时,或者有时更糟糕的是,当你不必要地使用一个模式时.后者让我疯狂,因为当我分析一段代码时,我自然首先假设那里有一切的原因,当我看不出某事的原因时,最安全的默认假设是我错过了一些东西.而且由于我不想以未知或不可预测的方式破坏代码的风险,我浪费时间试图弄清楚为什么它在那之前我弄乱它.

  • 是.每行代码都需要花时间阅读,理解和维护它.如果这次不值得,那只是浪费钱. (3认同)
  • @Charles:"因为我不想以未知或不可预测的方式破坏代码的风险"这就是设计模式的用途.如果你无法解释一个正确使用的设计模式(这个问题意味着什么),你需要学习设计模式,这通常比业务代码更容易,因为它有很多参考资料,与例如内部产品编辑严重相反. (2认同)

Pat*_*her 17

几十年来,程序员经常花时间通过应用他们不理解的实践来使软件变得更糟,而不是学习为什么这种实践是好的. 使用某些工具/关键字/框架可以让程序员感觉很复杂,当他们只是搞砸了.一些常见的例子:

  • 抛出大量的try/catch/finally块会让程序员觉得他们有错误处理方案,而事实上他们没有.
  • 用存储过程替换sql可以使程序员感觉他们有一个数据访问层,神奇地为他们提供了效率,可重用性,封装,而事实上他们却没有.
  • 使用类使许多程序员相信他们正在进行面向对象编程,而实际上他们并不是(或者只是在OO的表面上).

这份清单可以永远持续下去.这种趋势一直存在并且永远存在,因为我们人类总是寻找捷径.我们现在看到很多模式,因为模式目前很受欢迎.根本问题是相同的:开发人员不关心软件开发的复杂程度,并且认为盲目实施的模式或实践可以替代学习和谦虚.

解决方案?很难说.虽然交出了一个初级开发人员Code Complete或其他类似的东西,但你不能犯错,以帮助他们理解这是关于将原则应用于特定情况,以及伟大的开发人员保持简单.