我正在研究模式和反模式。我对模式有一个清晰的概念,但我没有反模式。来自网络和维基百科的定义让我很困惑。
有人能用简单的话给我解释一下什么是反模式吗?目的是什么?他们做什么?这是好事还是坏事?
我正在研究模式和反模式。我对模式有一个清晰的概念,但我没有反模式。来自网络和维基百科的定义让我很困惑。
有人能用简单的话给我解释一下什么是反模式吗?目的是什么?他们做什么?这是好事还是坏事?
当前回答
今天,软件工程研究人员和实践者经常互换使用术语“反模式”和“气味”。然而,它们在概念上并不相同。维基百科上关于反模式的条目指出,反模式与坏实践或坏想法至少有两个不同之处。反模式是
一种常用的过程、结构或行为模式 最初看起来是对一种疾病的适当而有效的反应 问题,通常有更多的坏后果比有益的结果。”
它清楚地表明,选择反模式是因为相信它是当前问题的一个很好的解决方案(作为模式);然而,它带来的负债多于收益。另一方面,气味只是一种糟糕的实践,它会对软件系统的质量产生负面影响。例如,Singleton是一种反模式,God类(或不足模块化)是一种设计气味。
其他回答
就像设计模式一样,反模式也是一个模板,也是解决某个问题的可重复方式,但是以非最佳和无效的方式。
反模式是人们倾向于以错误的方式编程的常见方式,或者至少是不太好的方式。
模式是关于如何解决某个类的问题的想法。反模式是一种如何不解决问题的思想,因为实现这种思想将导致糟糕的设计。
举个例子:“模式”是使用一个函数来实现代码重用,“反模式”是使用复制-粘贴来实现相同的功能。两者都解决了同样的问题,但是使用函数通常会比复制粘贴更具有可读性和可维护性。
在基于微服务的领域:
一切都是微的,除了数据是反模式。 它是指基于DevOps和CI/CD对每一件事情进行合理、充分的分解。也许有些分布式设计模式已经到位,甚至完全复制,但所有服务背后都有一个巨大的数据存储,因此它仍然是一个单一的数据结构。
微服务反模式的其他例子
反模式是设计模式的补充。反模式是在特定情况下不应该使用的模板解决方案。