清楚的记得,2013年6月就开始出来实习,然后2014年3月来到深圳一家企业,6月大学毕业,10月转正直到现在。在工作中一直从事研发,包括 JavaScript、java、Android ,但是由于个人经验不足,总是在自己的代码中会出现些许bug,当然两年下来也积累了不少经验。下面就说说2014年我遇到的一些疑难,希望热心人能够帮助解答,同时也希望能够帮助别人。
问题一:
关于if语句的使用,有嵌套if,有单分支if...
然而,在项目中看到许多if-else真的令人作呕,尤其是if嵌套,如果仅仅嵌套两层,代码结构还可以弄懂,如果是嵌套太深,代码肯定晦涩难懂,后期维护成本必然上升。那么,项目中我们应如何减少if的使用呢?或者说如何才能够让我们的代码容易读懂,不受if的干扰。
if(){}else if(){ if(){ }else{ }}else{}
问题二:
关于Exception的捕获与抛出
异常在代码中处处可见,那么对于异常我们具体应该如何处理。问题是这样的,我在某个方法中出现了检查时异常,那么要么我就抛出,要么就捕获。如果是抛出的话,这个方法就成为了一个异常方法,是一个不安全的方法,任何调用这个方法的地方都要重复相同的异常捕获与抛出;如果是捕获的话,这个方法虽然成为了安全的方法,却不知道如何通知调用方我在内部发生了异常。我看过有些代码是捕获后又抛出了自定义异常类的实例给调用方,不知道这样好不好,反正我是觉得这个异常类的代码至少需要维护吧。项目中具体应该如何处理这些异常呢?
public Striing process(){ try{ // some codes }catch(Exception e){ }finally{ }}
问题三:
参数的校验
为保证程序的健壮性,参数的合法性校验那是必不可少的一个步骤。可是,在程序中参数的校验具体交给谁呢?比如一个操作是新增一条记录,Controller里面的方法会判断参数是否合法,不合法就直接返回,合法执行下一步Service,那么Service方法中还需要对这些参数判断吗?接着执行Dao,那么Dao还需要对参数校验吗?看似Controller已经校验过了,就很安全,所以后续不需要校验,可是你不敢保证你的Service暴露的方法没人调用,同理Dao也是,只要有人调用了你的方法就会出现参数不合法而出现的各种运行时异常。那么,我们应该如何规范参数的合法性校验?
Controllerpublic String updateMsg(HttpServletRequest request){ String username = request.getParameter("username"); if(StringUtils.isBlank(username)){ return null; } service.updateMsg(username);}Servicepublic String updateMsg(String username){ if(StringUitls.isBlank(username)){ return null; } // some codes return "";}Dao public String updateMsg(String username){ if(StringUitls.isBlank(username)){ return null; } // some codes return "";}
问题四:
JSONObject的使用
JSON是网络数据传输的一种数据格式,同时JSON官网还提供了java相关的jar,json-lib让我们更容易的操作java与json,但是JSONObject有一个操作叫做toBean却差强人意,我相信很多人都遇见了这个问题,只是网上只有提问没有解答和我一样。希望高手可以解答。
JSONObject.toBean(JSONObject.fromObject("{name:dd}",User.class));
问题五:
JavaBean的使用
对程序员来说JavaBean并不陌生,Java中编写代码习惯使用JavaBean,觉得这样更加贴切面向对象编程,实质上限定了对象的扩展,尤其是一些业务逻辑经常发生变化的情况,一开始的时候只需要这些属性,后期结果又添加了属性同时又删除了属性,那么JavaBean自然也需要及时更新,这时问题来了,JavaBean更新后,调用JavaBean的set、get方法也会随着更新,从而代码处处需要更新啊!!JavaBean真的有那么好用???
public UserBean{ private String username; public void setUsername(String username){ this.username = username; } public String getUsername(){ return this.username; }}
问题六:
JavaScript中方法参数定义问题
自定义方法不但需要方法名称得当,让人一眼便明白方法的作用,同时方法的参数也要合理定义。项目过程中往往出现这样的情况,一个方法是改了又改。有的人觉得方法需要再添加一个形参,有的人则不需要这么多形参。幸好,JavaScript没有对实参的传递个数有严格要求,但是他对顺序是又要求的。我的问题是:把所有的形参当做一个对象config作为唯一形参会不会更好,这样另外有人想要添加形参,完全不需要改接口,不知道这样好不好?
function fun(config){ var username = config.username || ''; var age = config.age || '';}function fun(username , age){}
以上就是我在2014年当中遇到问题的一小部分(基础不扎实扰的祸),
当然对于高手来说这些问题不值一提,
但是我要提出来,
就是希望你们能热心的解决,
本人感激不尽!!!!