推行Struts+Hibernate遇阻

上周换了新工作。本来以为这个公司名气大一些,自己在技术上能够有一些进步。但是经过一周的工作,发现公司的项目实际上运行在一种原始的状态下面。公司的大多数B/S项目都是使用Servlet+Jsp来进行,在JSP中,我发现大段大段的Java代码。没有单元测试,功能测试也很初级,交付前的产品Bug多多,……。

大公司也不过如此,我心里稍微有些失望。但是我还是积极的想办法将成熟的解决思路提供出来。比如使用Struts分离业务逻辑与表现,使用Hibernate分离数据操作与业务逻辑。但由于公司缺乏对相关技术了解的人员,项目经理考虑的比较多,最终决定只采用Struts,至于我推荐的Hibernate,死活都不准备用了,原因很简单,考虑到效率问题,尽管我花了很多时间来说,Hibernate的效率如何如何高。对于这些惯用SQL的开发者,不让他们写SQL总觉得不放心。不用也好,用Hibernate最好配合使用Spring, 倒时候又有一堆的东西要费口舌。冰冻三尺非一日之寒,看来以后我要做的事情多了。

能应用上Struts也挺好,将层次分开后至少能够加强单元测试了。不过我是绝对不愿意写那一堆一堆的SQL来进行持久化的,公司有一群变态的SQL高手,写SQL跟写论文似的,一写就是一大段,都不带打转。

PS. 需求设计才是项目中最重要的。理解了客户的需求才是项目成功的基础。昨天去见客户,从头到尾我都没有明白他们明确的要什么。最后客户说:我们也晕,我们都不知道自己要什么。Faint。

真正的技术方案已经比较成熟了,无非是分层设计,层次之间减少耦合;或者注重业务,将与业务无关的部分用AOP孤立出来。可惜的是,在做项目的过程中,只有重用的开发模式,没有重用的开发代码。一个全新的项目可以将你前面积累的代码和数据库设计完完全全的否定掉。

遗憾的是,现在看到比较多的讨论是对技术架构的讨论,可能只有在这一点上技术人员能够从中得到真正属于本行业的成就感,如同F1车手拥有了一款好车,篮球选手得到了一只极品斯伯丁。真正在设计期的东西如概要设计,详细设计,功能限定,项目本身的意义所在,反而无人关注。这也许是因为商业机密,或者无通用性的原因,我觉得更有可能的是,和客户交涉是无味的,麻烦甚至痛苦的。

Comments are closed.