论坛首页 Java企业应用论坛

这样代码重用?

浏览 26210 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-12  
akun_007 写道
codeutil 写道
这样写的脑袋没烧坏吧??? 还是太有钱了一点也不用考虑性能阿?

 Plan getPlanByName(String userid, String planName){  
 Plan[] plans = getPlans(userid);  
 for(int i=0; i<plans.length; i++) {  
   Plan plan = plans[i];  
   if(planName.equals(plan.getPlanName())) {  
      return plan;  
    }  
  }  
  return null;  
 }  

严重同意啊
在做大数据量查询时,恐怕很费时的。

我很希望能拿这个作为理由。但是我知道我得到的肯定是“i don't care”。因为这个查询最多就返回一百条左右记录。
0 请登录后投票
   发表时间:2007-02-12  
你的pair的认真精神还不错,不过我不能同意按他的想法去做。
但不管怎么样,这样深入讨论后,肯定对DRY原则的如何应用,有更深刻的了解。

我觉得你这个例子里,最好的方式是,将SQL里共同的部分拆分出来,作为变量,
如:
String mainSQL="select * from plan where status=1";
String byNameSQL=mainSQL+" and plan_name=xxx";

这样就不会有重复了,又保持了使用SQL。


0 请登录后投票
   发表时间:2007-02-12  
Lucas Lee 写道
你的pair的认真精神还不错,不过我不能同意按他的想法去做。
但不管怎么样,这样深入讨论后,肯定对DRY原则的如何应用,有更深刻的了解。

我觉得你这个例子里,最好的方式是,将SQL里共同的部分拆分出来,作为变量,
如:
String mainSQL="select * from plan where status=1";
String byNameSQL=mainSQL+" and plan_name=xxx";

这样就不会有重复了,又保持了使用SQL。



sql都是存在类似ibatis的xml文件中的。
0 请登录后投票
   发表时间:2007-02-12  
ajoo 写道
akun_007 写道
codeutil 写道
这样写的脑袋没烧坏吧??? 还是太有钱了一点也不用考虑性能阿?

 Plan getPlanByName(String userid, String planName){  
 Plan[] plans = getPlans(userid);  
 for(int i=0; i<plans.length; i++) {  
   Plan plan = plans[i];  
   if(planName.equals(plan.getPlanName())) {  
      return plan;  
    }  
  }  
  return null;  
 }  

严重同意啊
在做大数据量查询时,恐怕很费时的。

我很希望能拿这个作为理由。但是我知道我得到的肯定是“i don't care”。因为这个查询最多就返回一百条左右记录。


100多条的话,不如放到内存中。然后两个方法都采用你同事的方法。
0 请登录后投票
   发表时间:2007-02-12  
我支持同构 只是你的pair的方法我不赞成,也许只是你举的一个例子而已 一旦软件成为产品 sql的维护是很大的工作量 影响的是后续的软件维护(比原始的开发更复杂) 如果仅仅是类似一次性的项目这个问题就没这么重要了。
0 请登录后投票
   发表时间:2007-02-12  
如果将来检索条件发生变化呢?
你的做法需要维护两处,你同事的做法只需要维护一处。
凡事没有绝对。
0 请登录后投票
   发表时间:2007-02-12  
偶支持你的pair写法,偶们的代码里面也有很多是这样写的,不过不是因为啥重狗,反正一件事情做一次就好了,即便是考虑到性能问题,因为可以给getPlans这种获取大集合的方法加上cache,getPlanByName这种集合过滤的方法就可以从中受益,而不是需要加2个cache
0 请登录后投票
   发表时间:2007-02-12  
看这两句sql的写法很象ibatis的sqlmap的写法,如果是ibatis的话,可以直接合并为一个statement做动态sql,这个这个解决办法比那两个都好。

如果不是ibatis的话,个人倾向于第一个解决办法,因为这种做法业务逻辑更加清晰,而且效率也会比第二种更好。
0 请登录后投票
   发表时间:2007-02-12  
pojo 写道
百分之百的支持你的看法。简洁明了,易读易用永远是第一法则。

看来不仅是你的Pair是匠气十足,你们的公司的技术文化也是工匠文化。在这样的企业文化下,捉对编程恐怕不是享受。


meto
0 请登录后投票
   发表时间:2007-02-12  
Readonly 写道
偶支持你的pair写法,偶们的代码里面也有很多是这样写的,不过不是因为啥重狗,反正一件事情做一次就好了,即便是考虑到性能问题,因为可以给getPlans这种获取大集合的方法加上cache,getPlanByName这种集合过滤的方法就可以从中受益,而不是需要加2个cache

你们牛;
那也叫重构?
死读书,读死书?
我看要是来个5个条件查询,看楼主那同事怎么写;
很明显
Plan getPlanByName(String userid, String planName);  
Plan[] getPlans(String userid);  
Plan至少是个2维数据表;加cache,我看你为整张表加cache得了;
1000个用户*10个plan = 10000 ; 你机器牛
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics