菜鸟新篇
实习期结束了,写过那么多代码,最近等毕业答辩,有空余时间,也有动力,来回忆开发过程的点点滴滴,权当为自己做总结,积累自己的代码库.若您觉得内容太浅,希望您给予我些许点拨,我将感激不尽,助人者必有好报.
从能想起来的最近的往回倒推吧.
相信很多人有过这样的经历,特别是做j2ee(B/S)的时候, 当从页面传过来一个参数,无论是servlet或者struts框架等等,我们都需要先判断这个值是否安全,例如:
String param=request.getParameter("param"); if(param==null || "".equals(param)){ doSth(); }else{ doSth(); } ||短路符,当第一个判断是true,则不进行下一个运算, 下面这种写法我觉得也不会出问题的 if( "".equals(param) || param==null ){ doSth(); }else{ doSth(); } 当然可以利用struts的intercepter和validate将这些操作封装起来,以供复用 安全性检查完了,接下来要进行功能性校验了 如果我们的需求是 根据传递过来的值判断执行哪一个业务流, 可以用if("sth".equals(param)){doSth()} 如果需要判断的业务流有很多等等,如果都用上面的方式,那么代码一定会很乱,而且复用性,健壮性,可移植性,可修改性等等都很差, 那么就需要一个很好的解决办法,这里用到了jdk1.5以后的枚举类型 public enum Field { error(0),postcode(1), email(2), telephone(3), mobile(4),address(5); Field(int value) { this.value = value; } private final int value; public int value() { return value; } } //利用枚举匹配页面端传过来的field名字 Field field=Field.error;//默认值为失败 for(Field f:Field.values()){ if(f.toString().equals(param.trim())){ field=f;//返回匹配的名字 break; } } //switch选择相应的field,并调用相应的代码 switch(field){ case email:{ do............ break; } case telephone:{ do............ break; } case mobile:{ do............ break; } case postcode:{ do............ break; } case address:{ do............ break; } default:break; }
可以封装成接口,方便调用