阅读更多

9顶
1踩

企业架构

原创新闻 软件开发中的反模式

2008-05-20 13:43 by 见习记者 jonathan_zz 评论(3) 有6539人浏览
反模式是这样一种模式,它告诉我们在什么情况下我们会把一个问题做的更糟。例如:

[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]
在一些架构和管理周期里,一个很明显的策略就是让系统开发者和系统用户隔离开。用户的需求,通过媒介传递给开发者,这些媒介包括架构师,经理或者需求分析师。

9
1
评论 共 3 条 请登录后发表评论
3 楼 Julysea 2008-05-22 09:50
译文的同志已经翻译过了。感觉不错给链接
http://feed.yeeyan.com/articles/view/27472/7244
2 楼 QQbyte 2008-05-21 16:50
我觉得很好啊,楼下心眼不要那么死嘛,dzone上有很多新闻都是这种类型的。
1 楼 shxiao 2008-05-21 16:13
这也能算是新闻,也太CSDN吧! 维基http://en.wikipedia.org/wiki/Antipattern上有详细的,上次还看到有高手全部翻译过来了,可惜没有保留

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • CORBA/TAO学习笔记

    对象:一个CORBA编程实体,由一个标识符、一个接口和一个实现组成。对象也被称作仆人(Servant),也叫做代理。对象引用:一个强类型的不透明句柄,用于标示一个对象的位置,即IOR。客户:对对象实现的接口进行调用的程序实体。      通过一个对象引用对其发送请求。对象请求中介(ORB):提供一种机制实现客户和对象之间的请求的透明传递。对于分布式程序而言,它使得客户像调用本地函数一样调用远程函数

  • 【中间件技术】第二部分 CORBA规范与中间件(1) CORBA基本原理

    第二部分 CORBA 规范与 CORBA 中间件 第 2 章 CORBA 基本原理 本章简单 CORBA 应用程序的基本结构——对象管理体系结构、CORBA 程序通信总线 ORB 的体系结构、CORBA 对于可互操作性的支持以及 CORBA 规范与基于 CORBA 的中间 件平台等内容。 § 2.1 对象管理体系结构 2.1.1 对象管理组织与其主要规范 在学习 CORBA 之前,我们首先了解一下负责制定和发布 CORBA 规范的组织 OMG。 OMG 是对象管理组织(Object Management G

  • 技术发展历程:从 CORBA 到微服务

    这些物流企业的系统可能基于不同的技术栈搭建,有的用.NET,有的用 Python。借助 Web Services,电商平台通过 SOAP 协议封装订单数据,以 WSDL 描述服务接口,发布到 UDDI 注册中心,物流企业就能轻松发现并接入服务,实现订单信息的无缝对接与处理,让企业间的集成变得前所未有的容易。并且,CORBA 的部署和维护难度很高,不同厂商实现的 CORBA 产品兼容性欠佳,这使得开发成本居高不下,逐渐难以适应快速发展的网络技术环境,于是催生了新的技术来替代它。不过,RPC 也并非完美无瑕。

  • 使用Java进行CORBA编程-JacORB-Notification Service

    上一篇介绍了CORBA的Event Service,http://blog.csdn.net/fw0124/article/details/7192305 它是一个很好的消息分发机制,但是它也有以下弱点: 1)缺乏消息过滤机制(No filtering)。 2)缺乏QoS机制(No Quality of Service)。 3)Consumer不知道存在的Supplier,也不知道Supp...

  • CORBA Programming with TAO - 8.Event Service(事件服务)

    CORBA Programming with TAO - 8.Event Service(事件服务) 摘要: 事件服务(Event Service)通过在通信的双方甚至是多方间引入一个第三方――Event Channel,一定程度上解除Client和Server之间的耦合关系,在通信的过程中,任意一方只需与Event Channel打交道,而无需确切知道对方的存在,从而使得二者由一对一的关...

  • corba事件服务中的push和pull模型

    首先说一下Corba中相对比较简单的服务模型,事件服务。 对于事件服务的话,有push和pull两种模型。下面就分别说一下这两种模型具体实现: 首先,push和pull模型都是基于事件通道EventChannel的,两种模型的通信最终都必须通过事件通道push或pull对象的引用,那就简要的说一下事件通道的概念。 事件信道(event channel)是一个既是事件提供者又是事件消费者的插入

  • CORBA版HelloWorld

    为什么80%的码农都做不了架构师?>>> ...

  • CORBA IDL 部分语法

    CORBA IDL 部分语法关键词: CORBA    ,IDL                                          IDL语法  octet 8位8位数保证传递过程中不变(char不是) IDL提供两个模板类型:sequence(序列)和string(字符串)。象数组一样,要用typedef指定sequence和

  • Corba开发之基于Java实现Service与Client

    1      概述 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程 序体系规范。或者说 CORBA体系结构是OMG为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案。 OMG:Object Management Group,对象管理组织。是一个国际化的

  • Leader Election 选举算法

    今天讲一讲分布式系统中必不可少的选举算法。 leader 就是一堆服务器中的协调者,某一个时刻只能有一个leader且所有服务器都承认这个leader. leader election就是在一组进程中,选举一个leader且让该组的进程都同意这个leader. 假设有N个process, 每个process都有个可以比较的ID,可以提出选举。 leader election算法要满足两点: sa...

  • 远程通信的几种选择(RPC,Webservice,RMI,JMS,SOAP,REST,CORBA的区别)

    RPC(Remote Procedure Call Protocol 远程过程调用) RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立性,缺点是不支持对象,无法在编译器检查错误,只能在运行期检查。   Web Ser

  • C# 在华为北向(推送)中的应用-CORBA编程原理与实现

    由于华为很多资料都是保密的,所以在实现过程中有很大麻烦,并且在生成C++中也总出现无法解决的问题。如何利用网上现存的有限资源成为大家一直以来的问题。这里推荐两篇文章: http://blog.csdn.net/fw0124/article/details/7197609 http://blog.csdn.net/linlianghui2004/article/details/6077213

  • 基于CORBA的可靠消息传递技术

    基于CORBA的可靠消息传递技术                          周顺利,薛贺,胥旺山(西北工业大学计算机学院,西安,710072 )摘要:本文详细的讨论了CORBA(Common Object Request Broker)通知服务对可靠事件传递的支持,实现了基于通知服务尽可能可靠的事件传递,提出了一个用CORBA通知服务实现可靠事件传递的框架。关键字:CORB

  • TAO教程之七:异步方法调用——针对急迫的( impatient )客户端的CORBA解决方案

    异步方法调用——针对急迫的( impatient )客户端的CORBA解决方案 我们的简单服务详细阐述了如何通过传统CORBA同步方向调用来查询股票的价格的。假定,举例来说,一个复杂的市场分析工具的初始化时,我们必须对数百支股票进行价格查询。在这种情况下按顺序发送请求会严重影响性能;由于在发送后一条查询请求之前我们需要等待上一条查询的返回,所以我们不能利用分布式的系统本身的并行性。针对这个问题传

  • TAO教程之十:TAO的实时事件服务

    TAO的实时事件服务 我们已探研了如何使用TAO的COS事件服务来接收更新过的股票的价格,但是如果我们并不关心所有的股票又怎么样呢?一个方法是使用多个事件通道,每个通道承载不同的消息容量。例如,每个事件通道仅携带股票其中的一部分。在本节中,我们将探讨另一个广案,即使用TAO实事事件服务来为我们执行过滤。TAO的实时事件服务可做许多其它事情,像保存具有优先级的点对点,使用多播来节省网络资源,产生超

  • 分布式-选举算法

    本文是《分布式系统原理与范型》读书笔记。 分布式选举,现在大家都知道的是Paxos算法。。。。。           许多分布式算法需要一个进程充当协调者、发起者或者其他某种特殊的角色。通常由哪个进程充当这个较色并不重要,重要的是它们中要有一个进程来充当。我们假设每个进程有一个唯一的编号,同时还假设每个进程知道所有其他进程的编号。但是进程不知道当前哪个进程正在运行,以及哪些进程崩溃了。

  • CORBA简介

    1.CORBA:Common Object Request Broker Architecture,通用对象请求代理体系。是由对象管理组(Object Management Group, OMG)制定的一种标准的面向对象分布式应用程序体系规范,旨在为异构分布式环境中,硬件和软件系统的互联而提出的一种解决方案。 2.解决异构分布式系统两条主要原则: (1).寻求独立于平台的模型和抽象,这样有助于

  • CORBA的事件机制以及对象适配器简介

     1.对象管理组事件服务(Event Service):CORBA通过使用事件服务实现异步调用。事件模型中事件提供者生成事件,事件使用者接收事件,事件提供者和事件使用者都连接在一个事件通道上。事件通道将事件从提供者传送到使用者,且不需要提供者事先了解使用者情况。对象管理组事件服务提供两种事件发送模型:推模型(push model)和拉模型(pull model)。(1).推模型:

Global site tag (gtag.js) - Google Analytics