一直以来,在项目开发中都使用各种开源框架,比如SSH(Struts + Spring + Hibernate),基于页面技术的Dwr,ExtJs,JQuery等等。公司经常会召开周会(每周五下午)各予其见,头脑风暴畅所欲言的发表自己的意见,经常听到这样一些声音,比如"现在的struts 框架版本太低,需要从Struts1.0升级到Struts2.0"。也就是说有些同事太依赖于框架,没有这些框架就干不了活。好像工作做的不好,干活速度慢都是怪框架版本太低。其实对于一个软件开发人员,过度依赖框架最自己是不利的,或者说对自己以后的发展都是不利的。可能对开始刚入门时提高开发速度却有有立竿见影的效果。但是几年以后?要知道开源框架层出不穷,这辈子都学不尽。
开源框架是什么?其实框架就是一个工具而已,所有的开源框架都是基于某种技术的基础之上进行封装的。比如Hibernate是基于JDBC封装的。JDBC原理,在往数据库中插入一条记录时需要获取连接,打开会话,插入数据,提交事务,关闭会话,关闭连接等一系列动作,需要手动去编程。而如果用Hibernate ,只需要手动编程插入数据这一个动作,其它的动作Hibernate都帮我们自动做了。还有比如Jquery源代码其实就是一堆封装了的JavaScript。所以说框架的使用确实给编程带来了方便,但是也使工程师变的越来越傻瓜,经常使用拷贝,粘贴,一个功能只需要把配置文件配置好了,功能基本上都成形了。对于复杂的问题,报个错误都束手无策。
所以工程师要想成为技术高手,必须把内功练好,开源框架只是一个辅助工具而已。真真需要的是学习框架的思想,查看它的源代码,然后把框架后面的东西摸透,比如jdbc,javaScript。对于一个毕业一到三年的工程师,需要修炼的内功有哪些呢?我认为有如下几点:
(1)、用户体验,在实际的项目开发过程中,主题功能开发时间只是很小一部分,大部分时间都花在了对需求的细化和对用户体验的细化上面。所以在开发的过程中,不仅仅是把基本功能实现好,当然基本功能这个是必须要努力,完整的实现好的,因为这是项目的基本骨架,这是客户的最低底线。然后如何去细化哪些用户体验方面的东西,需要下功夫。使用户用起来方便,舒服。
(2)、程序扩展性,功能在实现的时候一定要有扩展性,而不能把一些东西在程序里面写死了,客户的需求总是在变,功能在不断增加,程序有好的扩展性,能很好的应付这些变动。比如一个扩展的功能需要加进来,好的程序只需要增加一些接口,或者重用原有程序的方法,只需在这个方法里面再新增一些额外的代码而已。
(3)、程序健壮性,任何代码都必须经的起超级变态测试人员(不是骂人,而是说这个测试人员很尽责)的测试 。在被别人测试之前,首先要自己测试,比如单元测试,功能测试。这样给别人测试的时候自己才有底气,才自信,而测出来的bug也是最少的。
(4)、代码重构,当代码或者说这个类的属性,方法随着需求的增加急剧膨胀的时候,我们是时候要考虑重构了。重构也就是对膨胀的类进行分解、划分成多个类,使类之间保持继承或者依赖关系。对膨胀的方法进行划分成多个方法,使每个方法实现单一的功能然后在不同的地方调用。