什么是反模式?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (14)

我正在学习模式和反模式。我对模式有清晰的认识,但我没有得到反模式。网络和维基百科的定义使我困惑不已。

任何人都可以用简单的语言向我解释什么是反模式?什么目的?他们在做什么?这是一件坏事还是好事?

提问于
用户回答回答于

反模式是软件开发中的某些模式,被认为是不好的编程习惯。

与设计模式相比,这些设计模式是常见问题的常用方法,并且通常被认为是一种良好的开发实践,但反模式却是相反的并且是不可取的。

例如,在面向对象编程中,想法是将软件分成称为对象的小块。

例如:

class GodObject {
    function PerformInitialization() {}
    function ReadFromFile() {}
    function WriteToFile() {}
    function DisplayToScreen() {}
    function PerformCalculation() {}
    function ValidateInput() {}
    // and so on... //
}

上面的例子有一个可以做所有事情的对象。在面向对象编程中,最好为不同的对象定义明确的职责,以使代码更少耦合并最终更易于维护:

class FileInputOutput {
    function ReadFromFile() {}
    function WriteToFile() {}
}

class UserInputOutput {
    function DisplayToScreen() {}
    function ValidateInput() {}
}

class Logic {
    function PerformInitialization() {}
    function PerformCalculation() {}
}

底线是,有很好的方法来开发软件,以及常用的模式(设计模式),但也有开发和实施软件的方式可能导致问题。被认为是不好的软件开发实践的模式是反模式。

用户回答回答于

一种模式是如何解决某个班级问题的想法。反模式是如何不解决它的想法,因为实现该想法会导致糟糕的设计。

一个例子:一个“模式”将使用一个函数来重用代码,“反模式”将使用复制粘贴。两者都解决了同样的问题,但使用函数通常会导致比复制粘贴更易读和可维护的代码。

扫码关注云+社区