论坛首页 Java企业应用论坛

这样代码重用?

浏览 26208 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-02-12  
代码中有重复使用的地方,有坏气味,个人认为应该重构
0 请登录后投票
   发表时间:2007-02-12  
无伤大雅的小问题,由他好了。
如果plan name不是数据库索引的话,在你的内存里面查和在数据表里面查实际上消耗的时间相差无几。
等他明白了软件应该怎样设计,他自然不会在这种小问题上多费一点脑筋。
0 请登录后投票
   发表时间:2007-02-12  
ahau205109 写道
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 ; 你机器牛


条件再多也很好处理啊,
语气很犀利嘛 ,
“看楼主那同事怎么写”,
你自己想不明白的问题并不是就无解了,
请问hibernate的query对象是用来干什么的,
动态条件查询没做过?
我感觉是你“死读书” 了哦

呵呵 有话直说
0 请登录后投票
   发表时间:2007-02-12  
lane_cn 写道
无伤大雅的小问题,由他好了。
如果plan name不是数据库索引的话,在你的内存里面查和在数据表里面查实际上消耗的时间相差无几。
等他明白了软件应该怎样设计,他自然不会在这种小问题上多费一点脑筋。


“软件应该怎么设计”,你就知道,人家不知道你知道。这个问题小吗,我看还是要看什么样的系统的吧,站着说话不腰疼,大家观点不一致而已,我说你说这话明显是“程序员很普遍的臭毛病”
0 请登录后投票
   发表时间:2007-02-12  
引用


Plan getPlanByName(String userid, String planName);
Plan[] getPlans(String userid);


getPlanByName内部执行的是:
select * from Plan where userid=#userid# and plan_name=#planName#
and status=1
order by order_num

getPlan的内部执行的是:
select * from Plan where userid=#userid# and status=1


多写一个方法
Plan[] getPlansOrige(Modle m)

里面的SQL句是:
select * from Plan where userid=#m.userid# and plan_name=#m.planName#
and status=1
order by order_num


你用到的两个方法引用这个方法得到的内容


PS:有时多易少,少弈多...
0 请登录后投票
   发表时间:2007-02-12  
jianfeng008cn 写道
ahau205109 写道
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 ; 你机器牛


条件再多也很好处理啊,
语气很犀利嘛 ,
“看楼主那同事怎么写”,
你自己想不明白的问题并不是就无解了,
请问hibernate的query对象是用来干什么的,
动态条件查询没做过?
我感觉是你“死读书” 了哦

呵呵 有话直说


感觉你回话牛头不对马嘴;
for for for for for
0 请登录后投票
   发表时间:2007-02-12  
呵呵 没听明白就算了 
0 请登录后投票
   发表时间:2007-02-12  
这个系统该不是只给一个用户用的吧?

每次多生成100个对象,多做50次(算是循环找到一半就找到了需要的对像)循环,假设系统每天拥有10000个用户操作,每个用户平均调用这个方法10次,
那么,100*10000*10= ?
50*10000*10= ?

系统不想做大的话,代码怎么烂都可以,数据库都不用,直接一个hashmap最方便.



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”。因为这个查询最多就返回一百条左右记录。
0 请登录后投票
   发表时间:2007-02-12  
没有必要重构成那样吧,原来的做法未尝不可

简单至上,这是我推崇的原则
0 请登录后投票
   发表时间:2007-02-12  
ha 看了ajoo最近的几贴,感觉你们那里代码重用到影响别人理解代码的程度了。

不过说回来,SQL代码确实不方便重用。我一开始也觉得这类code不爽,不过现在基本想通了。一方面读这样的code方便,另一方面就算要修改也没几个连动着一起改了就完了。
0 请登录后投票
论坛首页 Java企业应用版

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