软件开发中的反模式
程序员文章站
2022-05-04 19:45:09
...
反模式是这样一种模式,它告诉我们在什么情况下我们会把一个问题做的更糟。例如:
[size=medium;]斑点The Blob[/size]
程序风格的设计导致一个对象集中了过多的功能,而其他的对象只用来保存数据或者执行一些简单的过程。解决的办法是,对设计进行重构,使功能平均的分散开,从而将某一变动带来的的影响限制在一定的范围内。
[size=medium;]持续退化Continuous Obsolescence[/size]
技术变革的是如此的快以至于开发者们经常在跟进软件版本和寻找能够协同工作的产品组合时遇到困难。尤其是商业化的产品在版本更新时,这些情况让开发者更加难以处理。在不同的产品间寻找能够交互的兼容版本将变得更加困难。
[size=medium;]熔岩流Lava Flow[/size]
失效的代码和遗忘的设计信息封存在一个已经发生变化的设计中。这就类似于火山中的熔岩流。可重构的解决方案包括一个结构管理程序,它可以消除不想要的代码,重构设计以提高软件的质量。
[size=medium;]用意不明Ambiguous Viewpoint[/size]
面向对象的分析和设计模型通常没有指明其用意何在。在默认的情况下,OOA&D的模型只指明了一个最无关紧要的用意。混合式的意图则不允许用户界面同实现细节在原则上相分离,这正是面向对象带给我们的好处。
[size=medium;]功能分裂Functional Decomposition[/size]
这个反模式是有经验的不适用面向对象方法的开发着用一门面向对象语言设计和实现一个应用程序时的产物。生成的代码类似于把一门结构化的语言放进一个类结构中。当一个自作聪明的程序员用一种非常“聪明”的方式把这种费时的方法带进一个面对对象的架构中时,这个架构将非常的复杂。
[size=medium;]幽鬼Poltergeists[/size]
幽鬼是指那些作用有限,有效执行期短的类。它们只为一些对象执行一些初始化程序。可重构的解决方案是将功能分配给一个生存期长的对象,从而消除幽鬼。
[size=medium;]输入问题Input Kludge[/size]
无法通过简单的行为测试的软件可能是这个反模式的一个例子,输入控制程序中使用了特殊的算法时多会发生这种状况。
[size=medium;]拷贝粘贴编程Cut-and-Paste Programming[/size]
通过拷贝源语句来实现代码复用将导致很严重的维护问题。复用的可选形式包括黑盒复用,通过使用通用源代码,测试和文档来减少维护问题。
[size=medium;]蘑菇管理Mushroom Management[/size]
在一些架构和管理周期里,一个很明显的策略就是让系统开发者和系统用户隔离开。用户的需求,通过媒介传递给开发者,这些媒介包括架构师,经理或者需求分析师。
[size=medium;]斑点The Blob[/size]
程序风格的设计导致一个对象集中了过多的功能,而其他的对象只用来保存数据或者执行一些简单的过程。解决的办法是,对设计进行重构,使功能平均的分散开,从而将某一变动带来的的影响限制在一定的范围内。
[size=medium;]持续退化Continuous Obsolescence[/size]
技术变革的是如此的快以至于开发者们经常在跟进软件版本和寻找能够协同工作的产品组合时遇到困难。尤其是商业化的产品在版本更新时,这些情况让开发者更加难以处理。在不同的产品间寻找能够交互的兼容版本将变得更加困难。
[size=medium;]熔岩流Lava Flow[/size]
失效的代码和遗忘的设计信息封存在一个已经发生变化的设计中。这就类似于火山中的熔岩流。可重构的解决方案包括一个结构管理程序,它可以消除不想要的代码,重构设计以提高软件的质量。
[size=medium;]用意不明Ambiguous Viewpoint[/size]
面向对象的分析和设计模型通常没有指明其用意何在。在默认的情况下,OOA&D的模型只指明了一个最无关紧要的用意。混合式的意图则不允许用户界面同实现细节在原则上相分离,这正是面向对象带给我们的好处。
[size=medium;]功能分裂Functional Decomposition[/size]
这个反模式是有经验的不适用面向对象方法的开发着用一门面向对象语言设计和实现一个应用程序时的产物。生成的代码类似于把一门结构化的语言放进一个类结构中。当一个自作聪明的程序员用一种非常“聪明”的方式把这种费时的方法带进一个面对对象的架构中时,这个架构将非常的复杂。
[size=medium;]幽鬼Poltergeists[/size]
幽鬼是指那些作用有限,有效执行期短的类。它们只为一些对象执行一些初始化程序。可重构的解决方案是将功能分配给一个生存期长的对象,从而消除幽鬼。
[size=medium;]输入问题Input Kludge[/size]
无法通过简单的行为测试的软件可能是这个反模式的一个例子,输入控制程序中使用了特殊的算法时多会发生这种状况。
[size=medium;]拷贝粘贴编程Cut-and-Paste Programming[/size]
通过拷贝源语句来实现代码复用将导致很严重的维护问题。复用的可选形式包括黑盒复用,通过使用通用源代码,测试和文档来减少维护问题。
[size=medium;]蘑菇管理Mushroom Management[/size]
在一些架构和管理周期里,一个很明显的策略就是让系统开发者和系统用户隔离开。用户的需求,通过媒介传递给开发者,这些媒介包括架构师,经理或者需求分析师。
上一篇: js函数的那些事(一)
下一篇: 【sql那些事】时间处理的一揽子事