前阵子
,
有幸经
liusong1111
介绍
,
做了一阵子
SOHO.
收获不小
.
项目是基于
Appfuse(struts
+ spring +hibernate)
开发的
.
我以前只用过
Struts,Hibernate
自己只学过一点
,Spring
只听过没用过
.
所有一开始挺紧张的
.
到官方看
tutorial.
然后做了几个例子
.
那上面的例子是采用
TDD
的流程的
.
先用
JUnit
写
Unit Test,
然后
run,
红灯证明
failed,
然后
coding
继续写或者修改真正的业务类
,
然后继续
run,
直到变成绿灯
.
证明这个类合格了
.
然后编写下一个
Unit Test.
一开始确实觉得有够繁琐
,
但是当整个步骤都结束了
.
发现集成测试的时候
,
直接启动服务器
,
发现一切都是正确地
.
这在以前的开发中是不可能的
,
第一次写完程序
start appserver,
总有各种各样的问题
.
或是非常简单的字符的一时失误
,
或是逻辑存在漏洞
,
而采用了
TDD,
一切都那么的舒服
.
当然
,
例子是自带的
Test Case,
我只是照抄
,
估计我自己写的话
,
可能我写的
Unit Test
就没有
Example
的好了
.JavaEye
有人
(
似乎是
Robbin)
说过
”
编写单元测试证明了一个人
OOP
的水平
”,
十分赞同
.
然后又明白了
Spring
为啥要面向接口编程了
.
为啥要有
Ioc,
为了方便
Mock
啊
.
特别是数据库连接和
Servlet
的
Request,Response
这种玩意
,
不
Mock
的话
,
真的不好
Unit Test
了
.
而如果不采用
Ioc,
那么就没办法在不改变程序代码的情况下切换测试
/
运行两种不同的状态了
.
再说一下
ant
吧
,
说起
Appfuse,
真想说成也
ant,
败也
ant,
那
N
多多多行的
build.xml
真的可以把人看晕
.
不过为了学习来说
,Appfuse
对
ant
的使用
,
真是典范啊
.
但是我对
ant
没有太大的好感
.
实在太长看起来太不爽了
.
我觉得如果团队能统一
IDE,
那就利用
IDE
内置的
Deploy
功能就好了
.
譬如
MyEclipse
所支持的
Deploy,
简单而好用
.
相比而言
,Ant
虽然强大
,
却有点让我害怕
.
特别是每次修改了任何一点点东西想在
app server
下看一眼
,
都得
ant
出一个新的
war
包
,
如果打包的时间短点还好
,
如果会耗费一分钟以上的时间
,
再加上启动
app server
的时间那真的是很恶心的一件事情
.
还有一些
open
source
的小
toolkit,
譬如
log4j, displaytag, sitemesh
都使用了并且是正确的使用了
.
譬如
log4j,
以前的项目不是没有
log4j,
就是用的乱七八糟的
,
打印的满屏幕的日志
,
有跟没有一样
,
反而看的更心烦
.displaytag
使项目经常用到的表格这块有个现成的轮子
,
而
sitemesh
解决了
jsp
上的
<jsp:include src=”XXX”>
类似的代码
,
并且可以简化
<%
If (XXX) {
%>
<jsp:include src= “XXX”>
<%
} else {
%>
<jsp:include src=”YYY”>
<%
}
%>
类似这样看起来很不爽
,
很恶心的
jsp
代码
.
发现“不重复制造轮子”的感觉真好,但是偶尔轮子不太合适,如果第一次用这种轮子,那么改造的时候也可能有点麻烦。譬如一开始不太懂得
DisplayTag
的本地化。有点郁闷,弄明白了之后。稍微一改,就可以用了:)