首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

今天学习重构没如何开窍,这有一段代码,大家帮忙Refactor

2012-10-09 
今天学习重构没怎么开窍,这有一段代码,大家帮忙Refactor今天学习重构没怎么开窍,这有一段代码,大家帮忙Ref

今天学习重构没怎么开窍,这有一段代码,大家帮忙Refactor

今天学习重构没怎么开窍,这有一段代码,大家帮忙Refactor

?

StringBuffer sb =new StringBuffer("select d.*? from?table d where 1=1 ");
??if(vo.getC() != null && !vo.getC().equals("")){
???sb.append(" and d.c like '%"+vo.getC()+"%'");
??}
??if(vo.getT() != null && !vo.getT().equals("")){
???sb.append(" and d.t = '"+vo.getT()+"'");
??}
??if(vo.getB()!=null && !vo.getB().equals("")){
???sb.append(" and d.B like '%"+vo.getB()+"%'");
??}
??if(vo.getD()!=null && !vo.getD().equals("")){
???sb.append(" and d.d = '"+vo.getD()+"'");
??}

SQLQuery query = this.getSession().createSQLQuery(sb.toString());

?

这是一段简单的条件查询语句,vo是参数,table是数据库里的表名

?

这段代码应该怎么重构,如果以后查询条件多了该怎么办,谢谢

?

?

  }
  if(vo.getT() != null && !vo.getT().equals("")){
   sb.append(" and d.t = '"+vo.getT()+"'");
  }
  if(vo.getB()!=null && !vo.getB().equals("")){
   sb.append(" and d.B like '%"+vo.getB()+"%'");
  }
  if(vo.getD()!=null && !vo.getD().equals("")){
   sb.append(" and d.d = '"+vo.getD()+"'");
  }

这段提出来作为一个独立的函数,一可封装出一个独立的功能且有机会解释其作用;二可避免使两个不同的功能散落在同一个函数内。
引用
SQLQuery query = this.getSession().createSQLQuery(sb.toString());

因为这也可以看作一个功能。
至于getC,getT之类的确实可以优化一下命名,便于理解。 7 楼 Just_抱怨 2011-10-16   hyj1254 写道引用


这段提出来作为一个独立的函数,一可封装出一个独立的功能且有机会解释其作用;二可避免使两个不同的功能散落在同一个函数内。
引用
SQLQuery query = this.getSession().createSQLQuery(sb.toString());

因为这也可以看作一个功能。
至于getC,getT之类的确实可以优化一下命名,便于理解。
至于命名,是我把后面的删了,公司有保密制度,代码严禁外泄的 8 楼 hdp2010 2011-10-24       这个看你系统怎么设计,如果你组装这样的sql语句很多,完全可以写一个接口,提供将实体bean转换成一个sql语句的一部分;
interface ITransBeanToStr<T>{
  String beanToSql(T obj);
}利用反射实现

热点排行