为可变而设计

昨天REVIEW了一份设计文档,数据模型设计的异常的"灵活“,令我几乎无法理解其中设计的奥妙...有感而发

记得以前我的师父在接手一个快烂掉的系统的时候,将该系统里面的源代码仔细阅读后,砍掉了其中近1/3的代码行,原因很简单,原来系统设计了一大堆”灵活“的设计,使得系统看起来很强大,实际上由于各个人员水平参持不起,反而使得系统变得脆弱,配置复杂难用,问题百出。

再举个例子,比如系统的配置参数,很多开发人员为了使得系统更加灵活,在系统中增加了很多配置参数,这种灵活的方式出发点是好的,但是可能带来一系列的问题,比如安装维护的问题(如何理解配置参数,配置参数的缺省值),比如良好的配置参数界面的问题等等,这些问题如果没有统一考虑,当配置参数越来越多的时候,系统将变得混乱不堪,难以管理。

同时,灵活设计应该是建立在全面的分析考虑基础上的,反思自己过去的一些设计,或者看到别人的一些”灵活“的设计,我发现有相当的设计,都是不全面,但是确是‘灵活’的,有用的,但是灵活带来的好处没有多少,系统的复杂性和稳定性却降低了。

早期的时候,觉得多线程可能提高系统的并发处理能力,因此在很多程序开发中总是喜欢用多线程并发处理,但实际上多线程带来的却是系统的复杂性和加锁后系统性能的下降,还不如采用单线程+消息度队列处理的模式简单可行。

灵活的设计是双刃剑,带来的是灵活,同时也带来了高度的抽象以及系统的复杂性,越复杂,意味着对系统开发人员的要求越高,实现难度越大,风险也越高。把简单的事情变复杂往往很容易,把容易的事情变简单才困难。

是否采用”灵活“的设计,如果没有客户的实际需求支撑,实际是一种应该尽量避免的做法;如果没有全面考虑清楚,则设计应该保留简单,清晰,可扩展,只要能够为未来的进一步的设计打好基础,就足够了。

应该记住:仅为可变而设计,不用担心未来系统的灵活性,我们会不断重构系统的!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值