有的也许没有什么理论依据,但都是在实践中总结出的“血的教训”。
“潜规则”1:使用Struts2框架时,action的名字不要以动词开头。action的名字最好不要使用“addXXX”、“deleteXXX”或“getXXX”之类以动词开头的词组,否则的话有时tomcat会报找不到action,页面无法跳转的错误。出现这种错误时,无论怎样检查配置文件都不会发现问题,因为配置文件写的都是正确的。根据实际经验,出现这种现象的概率大约是10%。一旦把action的名字改成以名词开头,如“XXXadd”,tomcat就能够找到action,页面也可以正确跳转了。
“潜规则”2:几乎所有的项目都需要打印日志。即使需求中没有提及,为了便于以后排查bug,至少要在发生异常时打印错误日志。更好一些的做法是,每个公共方法的开始和结束部分都需要打印等级为INFO的日志,开始部分打印方法名和传入参数,结束部分打印返回值。
“潜规则”3:对于Web项目,FD中需要说明该项目适用的浏览器(如IE8、IE9、FF等),而且即使是对于同一种浏览器,访问Web系统时输入的IP不同,看到的画面也会不同。比如同样是通过我机器上的浏览器(IE8)访问发布在我本机上的Java Web系统,在地址栏中输入localhost:8080/XXX或127.0.0.1:8080/XXX访问和输入我的机器的IP 192.168.100.100:8080/XXX访问,这两种访问方式下看到的画面有可能是不一样的。实践中发现,如果在一览表中某个单元格内数据为空,使用localhost:8080/XXX或127.0.0.1:8080/XXX访问时这个一览表的显示没有任何问题;但如果使用192.168.100.100:8080/XXX访问,这个没有数据的单元格的边框就显示不出来。
由于最终发布后用户都是通过输入IP或域名来访问Web系统的,所以自己测试时也要采用这种方式,才能保证发布之后没有显示异常。
“潜规则”4:使用ajax时偶尔可见代码异步执行的现象,即写在前面的代码尚未执行或尚未执行完毕,写在后面的代码就已经执行了,特别是如果网络连接不够流畅时更容易发生。如果发现在debug模式下JS代码能够正确执行,但是在正常模式下JS代码执行却会出错,就要考虑这种代码异步执行的现象了。目前的解决方法是使用setTimeout函数强制后续代码等待前面的代码执行完毕后再执行。
“潜规则”5:开发过程中tomcat多次重启之后,有可能出现先前能够跳转的页面却突然无法跳转的现象,原因尚不明了,解决方案是清空tomcat的work目录和已经发布的项目,再重启tomcat重新发布一遍项目。