“话说天下大势,分久必合,合久必分。“
—-《三国演义》里的卷首语
键盘上有两个键C和V,而Ctrl+C和Ctrl+V是用电脑的人几乎每天都要用到滴,从事软件开发的软件工程师每天用的最多就是键盘鼠标了,而对于软件开发来说CV式的开发早已在面向过程时代就已经被抛弃。
下午跟同事讨论了一些现在开发的一个项目中问题,涉及到如何对现存的CV式的开发模式做一个改进操作。
现阶段我们开发绩效管理软件,由于管理软件的特殊性,会有很多的雷同的表单在系统中流转,为了交互的友好性在这些表单呈现的时候会加上一些其他的信息。如考核过程中最常见的部门和人员的考核表单,在系统看来几乎一样,而为了交互的友好性界面呈现就会有一些差距。就拿打分这环节来看,在打分环节,用户会用到两个页面,一个显示被考核对象的List页面,一个显示每个被考核人每条指标打分想的Detail页面。现在的模式是,现开发测试部门模块,等测试过了后,就会CV一份用到员工模块,添加一些员工模块的比如员工所在岗位所隶属的部门等信息。先不谈这种CV的方式是否符合面向对象的规则、是否丑陋等,单从代码的维护角度来看,比如List页面希望再添加或去除一列非控制字段,至少需要修改两处。更大的噩梦来了,在审核、审批的环境同样使用这个List页面,这样一来修改的地方久更多了。
针对这种CV方式带来的不便,我曾经尝试将这些共同的部分单独抽取成一个一个方法,以供调用(抽取成方法而不是类是由于框架对类的继承有很多的限制),可这种实现亦不是很优雅,将显示的逻辑放到了业务中。
今天讨论得出的结果基本跟我曾经尝试的方式雷同,某种程度上只是对原有的CV模式的一个规范而已。
想到前一阵子学习的ASP.net MVC的框架中,将数据绑定直接写在.ASPX页面上,给了我一些启示,虽然没用到MVC框架,是否也能将现有用于显示的Grid、Grid前的表头等信息做成一个一个控件(ascx),控件中会设定一些参数,根据这些参数来直接访问数据库,返回需要显示的信息,这样就将变化的源头控制在了这个ascx上,一来能已很少的成本来调整显示信息,二来可以将部分的显示逻辑从业务逻辑中分离,三来对以后的控件升级扩展也能更方便。
下阶段将尝试做一个Demo来实现这一想法。





