<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>
几年前, 我作为一个顾问, 着手处理一个已经快要失败的项目了。顾客和开发商签订的合约是在一年之内开发完那个项目。 当我被叫过去的时候, 时间已经过去一年了。 显而易见, 这个项目失败了。
主要问题出在开发商的设计和技术方面(我们暂时先不管Weinberg准则。“No matter what they tell you, it's always a people problem”)。开发商认为可以借此机会开发一个可以通用的软件系统, 而且他们认为可以在顾客的预算之内开发完这个系统。
这些想法就导致了经典的“框架迷恋症”。开发商不再试着去解决顾客的问题,而是试着去解决所有他们认为是问题的问题。因此, 单独就那个原因而言,就可能比预期花费10倍甚至更多的时间和金钱
当然, 我们不可能总是避免人的问题。而且他们设计的体系架构本来就有很多重大的缺陷。其中一个缺陷是因为对需求的误解和假设, 并且将对象实体和Windows消息混杂在一起了。这些问题的出现是因为有一个技术主管, 他是这个系统的架构师。 他强迫人们认可他的设计, 并且吵了那些有异议的人员的鱿鱼。因此, 他对这个项目的误解就和他对这个项目理解的一样多, 也就是说, 他什么也不理解。
一般来说,“框架迷恋症”只是其中一种方式, 也可能是最高效的方式, 使企图重用的代码失效。
我认为当有些人决定我们应该重用某些代码的时候, 然而实际上火候还没有到。这种企图就可能导致重用代码的意图失去意义了。也就是说,我们的开发不是按照需求驱动了,而是由开发者的意图驱动了。我个人问题当我们第二次意识到需要重用某些代码的时候, 可能才是真正需要重用的时候。通常总是那些我无法预料到的情况, 至少是它没有发生在我认为应该发生的时候。
另外一个著名的代码重用失败的例子, 对整个工业界都是如此, 而且难以置信的昂贵就是EJB1和EJB2(EJB3好像就完全不同了)。EJB1/2是被设计用来处理一个想像中的开发过程, 但是看起来似乎从来没有在EJB1/2的生命周期内发生过。因此开发人员一直没有从使用这个框架中受益,反而一直出在和它的斗争之中。而且我也听到过很多企业将EJB踢出他们系统中的例子。普遍都说, 代价太大了。
我认为一些库也有可能陷入这种境地。当想着如何做才能使一个库被尽可能多的重用而不是如何去重用一个库的时候, 可能问题就来了。Python中的大多数库,在我看来, 在实际应用已经相当成功,而且很稳定。一个例外就是xmllib库,我认为太缺少Python的风格了。Python2.5中似乎已经解决这个问题了。
分享到:
相关推荐
REUSE_ALV_GRID_DISPLAY超详细讲解
go_reuseport, 将SO_REUSEPORT带到你 GO_REUSEPORT GO_REUSEPORT 是一个小 expirement,用于创建支持 SO_REUSEPORT 套接字选项的net.Listener 。目前,Darwin和 Linux ( 从 3.9 ) 系统
CAM_Reuse_Library_Samples
Reuse Methodology Manual Third Edition
Reuse ♻️ 通过复用React组件来创建新的组件
Soft Frequency Reuse Scheme for UTRAN LTE
Reuse.Methodology.Manual.3rd.Edition part1
PCB reuse
我们通过代码来探索UITableViewCell重用的实现
一本介绍可重用性RTL设计的英文书,内容包括系统层面关于重用设计的Rules和Tools,Macro的设计,RTL的Coding Guideline等。
Visual-Inertial Monocular SLAM with Map Reuse 仅用于个人学习,勿用于商业目的
Digital Approaches to Text Reuse in the Early Chinese Corpus.pdf
When can we safely reuse systems, upgrade systems, or use COTS components? When Can We Safely Reuse Systems, Upgrade Systems, or Use COTS Components? A. Wayne Wymore and A. Terry Bahill Systems and...
In this work we present a novel tightly-coupled Visual-Inertial Simultaneous Localization and Mapping system that is able to close loops and reuse its map to achieve zero-drift localization in ...
Local Text Reuse Detection
Unsupervised identification of text reuse in early Chinese literature1.pdf
程序dump,报错为 The ABAP program lines are wider than the internal table.此文档有解决方法
这是Mathy Vanhoef关于破解wifi加密协议WPA/WPA2使用的密钥重安装攻击方法的论文Key Reinstallation Atacks Forcing Nonce Reuse in WPA2的翻译