很意外的,今天花了半天多时间,看了《测试驱动开发》,当然还需要时间消化,里面有几处为什么这么重构,还是有点迷茫。。
入行一年多,项目做了几个。没一个满意的。。。。主要就是代码编写得很垃圾,团队协作不好,bug一堆。自己都不想看自己的代码。
这也许就是受过正规软件教育和自学的差别吧!
不过个人感觉这也是好事,至少知道了自己的不足。所以花时间看了重构,TDD,又看了一遍设计模式。有了一些收益,但是还是需要在开发中去实践。所以从现在开始逼迫自己以TDD开发。说来惭愧,以前项目里基本就没测试,文档基本都是项目完了补的。(我想这也是国内大部分小公司的现状吧。)
今天照着书,做着例子,用Ant管理程序,有点惬意
![](/images/smiles/icon_biggrin.gif)
之前就有用过Ant还有Maven,后来又没用了,因为实在没找到其所说的优越性。今天借着例子用Ant,感觉效率上是有一些提高(可能是错觉),应该是比较有信心了。因为有测试,双击下Ant的相应target,几秒钟测试通过,感觉心情很舒畅。有信心和愉悦的心情做下一步工作
至于为什么还选Ant,而不用推广比较火热的Maven,是因为第一次使用Maven,肯定要上网,网速要慢了就郁闷了,一堆jar要下,要不自己建个仓库。。。。个人使用的开销太大了,很不划算。Ant就比较灵活了,写个build.xml文件就搞定了。别人用什么开发工具,什么样的目录结构,我拿到手,修改下build.xml文件里的相应路径就搞定了。
为顺利用上,特意花时间解决了一些以前用Ant,悬而未决的问题。
1.和jee没关系,是swing相关的。以前用ant运行swing程序,老是一闪而过,网上还没找到解决办法,昨天又找了找,在javaeye问答区找到了答案。将java标记的fork属性设为true或on即可。意思就是将ant和java程序运行在不同的jvm上。默认是运行在一个jvm上的,所以当ant运行结束后,自然就会关闭swing了。
2.ant启动,关闭tomcat,在网上也找到了答案。
<target name="run">
<description>启动tomcat</description>
<java jar="${tomcat_home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat_home}"/>
</java>
<echo>成功启动Tomcat</echo>
</target>
<target name="stop">
<java jar="${tomcat_home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat_home}"/>
<arg line="stop"/>
</java>
</target>
<target name="debug">
<java jar="${tomcat_home}/bin/bootstrap.jar" fork="true">
<jvmarg value="-Dcatalina.home=${tomcat_home}"/>
<jvmarg value="-Xdebug"/>
<jvmarg
value="-Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"/>
</java>
</target>
3.ant取消部署项目时,有时WEB-INF下的一些jar无法删除,导致了整个项目目录无法删除,继而导致无法重新部署。解决办法,在META-INF(和WEB-INF目录同级)目录下,新建一个context.xml文件,输入如下内容。
<Context path="/你的项目名称" reloadable="true" antiResourceLocking="true" antiJARLocking="true">
</Context>
4测试失败时不停止测试,还继续运行。解决办法,在junit标签里面将haltonfailure属性和haltonerror属性设为true或on即可。
5我昨天找了半天ant的debug功能。ant的debug功能和IDE的debug功能应该是不同的意思,或者是我理解有误。一般使用IDE的debug都是单步调试的,就是断点调试。而ant好像就没断点调试能力(好像需要额外的代码模拟之类的,没研究)。不过这也就需要用测试来弥补了(是初期强迫写测试的好办法
![](/images/smiles/icon_biggrin.gif)
),事实上断点调试时间是比测试所花的时间长得多。这个在做项目时深有体会。
写了一些ant脚本。
1.build_app.xml。应用程序相关。包括了编译,运行和打jar包。
2.build_web.xml。web程序相关。包括编译,打包。
3.build_test.xml。测试相关,配合上面两个构建文件使用的。提供编译测试文件,测试及生成测试报告。测试类请以Test结尾,否则自行修改构建文件。
4.run_tomcat.xml。tomcat相关,启动,关闭,debug tomcat。部署,取消部署,start,stop项目,配合build_web.xml使用。
四个文件保存在ant目录下,只要在根目录下建立build.xml文件,将需要的构建文件import进来就可以了。不要同时import build_app.xml文件和build_web.xml文件,target名称有重复,且本来就是两个不同的项目类型。
文件放附件,对Ant有兴趣,又不想写构建脚本的可以玩玩。相应路径需要自行修改。
最后,自我祝愿我的代码质量能有所提高