阅读更多

9顶
1踩

企业架构

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

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

[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):提供一种机制实现客户和对象之间的请求的透明传递。对于分布式程序而言,它使得客户像调用本地函数一样调用远程函数

  • 使用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 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,对象管理组织。是一个国际化的

  • [搬运]CORBA中BOA和POA的含义

    先来BOA,搬自:http://www.cl.cam.ac.uk/research/dtg/attarchive/omniORB/doc/2.8/omniORB2/node6.html The Basic Object Adaptor (BOA)   This chapter describes the BOA implementation in omniORB2. The CORBA sp...

  • CORBA原来在java中扮演如此重要的角色

      RMI是跑在corba之上的(当然也可以跑在自己的JRMP (Java Remote Method Protocol))上。谓之rmi over IIOP。ejb的调用最终转化为对ORB服务的调用。大部分ejb厂商采用的是这种方式的实现。回过头来看ejb客户端的那些stub,也就不再神秘了。都是orb stub而已。WebSphere中有一个orb的容器。可以在admin

  • 分布式中的选举算法

    分布式系统选举算法

  • 关于Corba调用的Timeout 问题

    关于Corba调用的Timeout 问题在VisiBorker 下无论是C++ 还是 Java Corba 调用默认是没有超时的。也就是说调用将阻塞到有返回为止如果要配置 Timeout,就必须为Orb配置相关的PolicyC+...

  • CORBA不使用命名服务进行通信

    <br />一般的CORBA程序都会需要启动一个命名服务,然后在命名服务进行绑定或者解析工作。至于绑定和解析的内容实际上就是CORBA对象的引用。<br />不使用命名服务进行通信的原理其实很简单,也就是不需要去命名服务绑定,解析引用,换个地方式去搞定这个交互过程。至于传递的内容有很多种,例如IOR,corbaloc,file等。我现在用的就是IOR值<br /> <br />IOR其实就是从orb.object_to_string(Object)方法获得,然后又用orb.string_to_object(

  • 分布式算法之选举算法Raft

    3种状态:Leader(领袖)Follower(群众)Candidate(候选人)。规则:群众发起投票成为候选人,候选人得到大多数票至少(n/2)+1,才能成为领导人,(自己可以投自己,当没有接受到请求节点的选票时,发起投票节点才能自己选自己),领导人负责处理所有与客户端交互,是数据唯一入口,协调指挥群众节点。选举过程:考虑最简单情况,abc三个节点,每个节点只有一张票,当N个节点发出投票请求,其...

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

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

  • U2000北向 CORBA客户端代码Java编程示例

    ** 客户端代码Java编程示例 **  使用生成u2000_idl.jar和C:\JacORB-2.2.4\lib内的jar包进行客户端代码的开发 图 Eclipse 代码demo环境 通过下面编程示例demo(包含4个类Client,AlarmReciever,TANmsSession_IImpl,Util),实现获取EmsSession、查询U2000支持的manager列表和事件通知订...

  • CORBA

    一.题目分析: 充分利用CORBA系统中对象的特点:接口的继承性,操作和属性自身的特点。通过两个实例分析COBRA内部实现结构。 二.配制环境JDK环境: `` 三.具体实现 题目一:Java版CORBA程序1——HelloWorld 1.编写IDL接口HelloWorld.idl module sample{ interface HelloWorld{ wstring sayHello();...

  • 【中间件技术】第二部分 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

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

    CORBA的Event Service提供了一种分发事件通知的方式。 Event Servcie的Event Channel从一个Supplier那里得到事件,发送到一个或多个Consumer那里。 事件可以用push的方式发送,也可以用pull的方式发送,也可以混合push和pull。 Event Service的实现可以看JacORB安装目录下的\idl\omg目录中的IDL文件。 C

  • CORBA版HelloWorld

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

Global site tag (gtag.js) - Google Analytics