设计模式很好,但很复杂。我们应该在小项目中使用它们吗?实现设计模式需要更复杂的开发人员,这反过来又增加了项目成本。另一方面,它们使代码整洁干净。它们对小型项目是必要的吗?
更新:当团队不能有效地处理设计模式时,我们应该坚持使用设计模式吗?
发布于 2011-07-25 13:40:50
设计模式很好,但很复杂。
这是一个错误的假设。设计模式旨在消除现有代码的复杂性,并有助于开发人员之间的通信。当设计模式引入更高层次的复杂性时,它们就会被滥用。
实现设计模式需要更复杂的开发人员,这反过来又增加了项目成本。
这也是一个错误的假设。任何开发人员都应该在代码中争取最低限度的复杂性。随着维护和扩展性成本的降低,一个好的开发人员非常值得他的钱。
它们对小型项目是必要的吗?
当它们帮助使代码更有表现力、更不复杂时,它们是必要的。这与项目规模无关。一个好的开发人员(tm)不会在适当的时候过度设计和使用它们。
发布于 2011-07-25 13:56:47
Falcon的回答是正确的,但我也想补充补充信息。
我最近(在一年半内)学习了设计模式。起初,他们成了我所有问题的“黄金”锤子。我最近才意识到,我开发的很多应用程序都是过度设计的。最近,我的任务是为我编写的一款软件添加额外的功能,但当我看到它时,我对它的复杂性感到畏缩。那是因为当时,我正处于设计模式的高度兴奋之中,并且在用我的新发现的知识做一些理由。这不是我们应该采取的方式。现在,我设计我的项目时考虑到了简单性,或多或少忽略了设计模式,除非有一个非常明确的理由将它们引入进来。这通常出现在重构过程中(至少对我来说)。
设计模式还允许开发人员共享一种通用语言。当每个开发人员都知道该语言时,您可以非常简单地解释大部分代码。
发布于 2011-07-25 13:58:35
你总是在使用某种模式。唯一的区别是您的模式是否尽可能简单。spaghetti和meatball代码背后的代码遵循一种模式,它恰好是一种非常难理解的模式,因为它将所有东西放在一个地方(谁想使用包含SQL代码段、UI操作和业务逻辑的代码,都在一种方法中)。记住,任何一个白痴都可以写一个设计得非常糟糕的软件,但是只有天才(可能是一个昂贵的天才)才能回去,然后安全地修复那个软件。
要回答你问题的一个具体部分:
实现设计模式需要更复杂的开发人员,这反过来又增加了项目成本。
我想你误解了什么是好的设计。想想看,一个有5个深循环嵌套的算法还是一个有2个深循环嵌套的算法更容易理解?哪种选择更便宜?这两个深层次的选择更容易读、写、维护和理解。那么,你为什么要证明5深循环是正确的呢?所谓的“设计模式”,顾名思义,每一次都是更简单的模式。如果您的开发人员无法编写设计良好的软件(也就是利润更高的软件),那么您需要找到能够充分理解编程以做出基本设计决策的开发人员。
https://softwareengineering.stackexchange.com/questions/95718
复制相似问题