今天去朋友公司,恰逢一位技术大牛给他们培训,悉心聆听并交流了一些观点,这位技术大牛据说曾在IBM、华为、Oracle任职,是真正的技术大牛,来去匆匆,具体身份没有多做了解,仅在此记录所谈所思。
当谈到现在的管理平台项目有一些问题,比如前端和中端耦合太紧密,是否要花费大量功夫来重构,让二者解耦的问题时。大牛说,他认为一切都是以价值为导向的,是否做一件事的唯一评判标准应该是,这件事对于该产品有没有价值,而软件产品的价值分为两类:业务价值和平台价值。第一类业务价值是指软件的每一个功能能给用户带来多少方便,节省多少时间,例如,我们做了一个请假的电子流,那么这个电子流具体能帮用户节约的时间、带来的方便就是这个功能的业务价值;第二类平台价值,大牛说了很多,我理解的是指的是这个软件本身是否容易部署,是否轻便灵巧,是否方便传输,比如编译、打包的难度是否够低,安装、维护是否足够便捷等。
如果说重构确实是有价值的,那么再因地制宜确认重构所带来的价值是否是该软件真正需要的价值。举例说明,我们把软件分为两类,第一类是短期使用的软件,例如,如果当前软件预期寿命只有一年,访问量不大,那么重构解耦的价值并不是该软件需要的,相反如果去做重构解耦会花费大量的时间、延期交付,得不偿失,重构解耦并非该类软件所需要的价值;第二类是长期使用的软件,比如该软件的预期寿命是5年,访问量会逐年增大,功能也会不断更新,这种情况下如果不去重构解耦,会导致每次前端页面的修改都需要修改中端代码,增加、修改功能时会不断的在中端原来的方法上添加代码、打补丁,这会导致一个方法越来越长,使代码变得冗杂沉重,最终非常复杂并且和前端耦合越来越密不可分,到最后即使想分割开来也无能为力,这时候再想做解耦就已经有心无力了,这种情况,越早实现重构解耦越好,节约的资源、达到的效果也越优,重构解耦对于这类软件来说就是它真正需要的价值。