今天上网,无意间看到有人提到了Appfuse,给的评价很高,我也down了一个,看看。
刚拿到手时,跑了一下appfuse自带的例程。居然一行代码不写就可以自动生成程序代码,着实吃了一惊。外加小激动了一下。自动化的代码生成,测试,简化程序的开发,同时使编程归一化,这些都是自己一直想做却没做的,主要考虑到工作量太大,没时间搞。
根据appfuse的教程,写了一个例子,却发现appfuse虽然提供了一整套的代码生成系统,同时也带来了很多的限制。当然大部分是对appfuse框架不熟的缘故,打开appfuse的配置文件,也就是他自动生成的sturts,spring等的配置文件。发现webapp下有大量的配置文件,且目录结构相对固定,灵活性严重不足。如果要对appfuse做修改的化,个人觉得还不如自己写一个框架。
反思在项目开发中,对hibernate,dao等当前都已经有代码生成的工具,真正需要代码自动生成的地方已经不多了。反之,使用代码生成工具进行代码生成,在手工修改,这种方式个人认为很容易在项目组产生混乱。别的开发人员很难分辨那些自动生成的代码是自动生成的,那些是经过修改的。
同时,在项目中真正重要的业务逻辑,是无法使用代码生成工具生成,必须手写,大部分情况下,如果你的项目大量使用了代码生成技术,基本上只有两种可能。一是抽象不够。二是系统比较简单,整个系统采用了一种特殊的代码生成的框架,如appfuse,就可以搞定。而第二种情况可能性不大。
总结,相对与其他框架来说,个人认为appfuse也属于重型框架,不够灵活,适合某些特定的场合,但使用范围非常有限。在一般的项目中,可以使用hibernate middlegen等小规模的代码生成工具,手写部分代码,这种做法适用性更广,更灵活些。如果真的需要一些特殊的代码生成,且没有合适的工具,可以自己用xdoclet写个模版。
虽然自己一直希望能出现一个象appfuse这样进行代码生成的框架。但当自己真正的遇到了,才发现完全的代码生成,用处不象自己设想的那么大。且局限性很多。进一步纠正了自己对JEE的理解。