代码改变世界

易经与软件开发

2009-12-23 11:25  宗哥  阅读(2122)  评论(11编辑  收藏  举报

      Head First Design Patterns中的设计原则的tips都是太极作为图标。

      太极可是中国的国粹,是不是那些foreigner也觉得这个太极的精髓暗和软件开发的思想?

      万物皆有阴阳,软件架构开发中有相对变化较快的东西,有相对不变的东西。软件项目开发就是把客户的需求变成可交付的软件,为了这个目标,我们程序员前仆后继的提出各式各样的管理方式和技术思想。无疑,OO思想是当前在应付客户瞬息万变的一种法宝。但是OO真的是银弹了吗?OO思想的三大特性是什么?:-),各式各样的面试和考试都会问这个问题,当然IT培训机构也掷地有声的告诉学生:封装,继承,多态!道,可道,非,常道。你知道了封装,继承,多态,也能规范简洁的写出实例代码,但是你们写出松耦合的程序吗?

      初学者重语法,清语义,不信,你可以问身边初学者以下的原则他怎么理解:

这里的接口,表示抽象的一个语义,而不是一定要具体语言的interface或者abstract class,只是要能到达运行时”多态“的效果,完成对象的替换的语义就可以了。

      易经原名叫变经,讲的就是变化的学问,过去不可变,现在可变可不变,未来变不可测,其实不管怎么变,有一条原则,“变不离经”,同样,我们应对变化的客户需求,要设计相对稳定,便于扩展的框架。设计的原则就是你的“经”。超越模式,超越语言。OCP ,LSP,DIP,ISP,CARP ,LOD 等等,这个在WEBCast的李建忠老师及这本书中都有深刻的阐述。

     易经另外一条变的原则是“变不损人”,同样,业务需求的变更,软件多少都得变化才能适应去需求,关键是这种变化的代价和系统的震荡幅度。我们设计原则不是让我们面对客户的需求拿出合同和当初客户签字的需求,说“看当初你签的字,为什么现在又要变”?积极拥抱这种编化,没有不变的需求,从三维的角度看,那个需求在客户签字的一刹那已经作废了,易经的最后一卦是什么?是未济,就是这个道理。好的设计,可以把变化隔离在系统主线以外,让震荡幅度仅仅在可以预测的组件模块内,让这种变化不要影响调用它的Client端。这个就是不“损人"吧。

     易经第三条变的原则是“变不多用”,不管你的设计原则再具有指导意义,你的软件用了多么优秀的设计模式,你所能应变的需求变化都是有限的,这一条你可以可以仔细琢磨,尽量在软件交付前控制其变化或者变化的基线,否则软件无从交付,客户抱怨连天,开发人员喋喋叫苦。变不多用是讲变化不要过于频繁,否则等于没有变化。如果你的需求变化过于频繁,你要审视你的需求基线是否是真正的调研产物还是拍脑袋决定?对于客户确实真实的需求,如果偏离了这个基线,你要做出的抉择不是简单的回绝和接受这么简单,有个艺术的处理过程,没有简单对错之分和该不该的问题。易经里面有个“化”的问题,不是不解决问题,而是大事化小,小事化了,当然不是拖延,是找出问题的原因,通过变通的方式把问题化解掉。

;