信息化 频道

从编码到架构 难忘的一次项目经历

  【ITPUB 精彩论点】时间要回到2005年8月,一次意外的项目开发,让我终身难忘,也从此影响了我的开发之路。

任务概述

  设计一个表格框架(HTML中的table元素),用于物业管理系统开发中,提高项目的开发效率。现在看来,当时需要实现的表格框架和ExtremeComponents很相似。不过在我的功能需求中还包括数据的添加和编辑功能。

挑战

  项目经理突然交给我一个任务,既然兴奋,又紧张。兴奋的是,我终于可以作为一个重要的角色参与到项目开发中;而紧张的是,我之前根本就没有做过框架的东西,甚至在写代码的时候都很少用过抽象类,接口……难度可想而知。

  挑战1:系统建模

  一个优秀的框架不仅能实现系统的需求,还应该有极强的扩展性。所以最重要的就是抽象系统模型。于是就开始设计表格抽象类,表格列接口,表格单元接口,渲染器,校验器,编辑器组件,数据源接口等等。能想到都给他抽象出来,所以我就抽象啊,抽象啊……到最后我自己都觉得这个系统设计变得没有边界了。由于没有设计框架的经验,现在看来许多设计思路也是有问题的。比如说数据源接口,它的作用其它就是给表格提供原始的数据,表格并不关心这个数据是从哪儿得到的,可能是数据库,也可能是文件。而我在设计的时候,却把它设计成JDBC的结构。比如说得到表格的所有数据getData方法,我返回的数据类型是一个类似于ResultSet的对象,限制了表格的扩展性,或者就叫着设计过度。

  挑战2:技术需求

  在这个框架中用到很多技术是我以前没用过的。但在公司里学技术却有一种不同的感受,那就是压力。无形之中让自己不得不全速前进,快速掌握新的技术。比如说框架中需要通过XML来配置一个表格,所以需要了解XML的解析,DTD的定义。在页面中使用表签的形式来显示一个表格,要学习如何编写自定义表签。为了测试表格正常的提取数据,采用一个O/R框架来实现数据源接口。以前看过半年的XML,没有弄明白是怎么回事,在公司里逼着用。一天不到学会使用ibatis;使用PowerDesigne建模等等。使用再一次体会到那句话:人是逼出来的。PS:我自己说的。

  挑战3:经验

  在做开发的时候,最重要的就是经验。要清楚你系统的应用场合,才能选取有效的解决方案。对于我一个新人来说,这点是最致命的。举一个例子,这个表格框架本身还支持添加,编辑功能。用户可以通过点击“添加”按钮,跳转到另一个页面完成添加数据的功能。而这个表格框架是通过tag插入到JSP页面中的,所以就存在一个问题:当页面跳转后,原有页面中的其它数据就会丢失。当时我根本没有意识到这个问题,是我的项目经理通过提问的方式来让我明白还存在这么一个问题(最后这个问题是通过AJAX来解决的)。当时才休会到要设计出一个好的系统,技术并不是决定一切的,经验也起着至关重要的作用。除了平时的经验积累,还需要多思考,才能真正的从一个低级的开发人员慢慢进步。

收获

  在这个框架的开发过程,确实很累,感受到很大的压力。记得连续几天晚上3点才睡,早上7点就越来去上班了。不过艰辛之后的收获也变得特别甜。框架设计基本完成的那天,除了我显示了框架的运行状况,还有就是让公司另一个开发人员,在我的指导下,通过很简单的编程,实现一个日历编辑组件。当他运行成功的那一刻,真的是有一种无法言表的兴奋和激动,就像遇到了久违的恋人一样。

  其实这个框架完成的时候,收获最大的是自信和思想。有了这次经历,在以后我的开发中,我再也没有因为未接触过的新技术而害怕,再也不用担心解决不了的问题。有了这次经历,我学会了分析问题,思考问题。虽然现在还需要努力,但我已经在不断的进步,而且对自己充满了信心。

结束语

  如果有一面墙,你现在没有办法翻越,但你又必须过去,你会选择怎么做?“把自己贵重的东西都扔到墙的另一边,你自然会想到办法过去”,人啊,就是逼出来的。

0
相关文章