锁定老帖子 主题:这样代码重用?
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-12
代码中有重复使用的地方,有坏气味,个人认为应该重构
|
|
返回顶楼 | |
发表时间:2007-02-12
无伤大雅的小问题,由他好了。
如果plan name不是数据库索引的话,在你的内存里面查和在数据表里面查实际上消耗的时间相差无几。 等他明白了软件应该怎样设计,他自然不会在这种小问题上多费一点脑筋。 |
|
返回顶楼 | |
发表时间: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对象是用来干什么的, 动态条件查询没做过? 我感觉是你“死读书” 了哦 呵呵 有话直说 |
|
返回顶楼 | |
发表时间:2007-02-12
lane_cn 写道 无伤大雅的小问题,由他好了。
如果plan name不是数据库索引的话,在你的内存里面查和在数据表里面查实际上消耗的时间相差无几。 等他明白了软件应该怎样设计,他自然不会在这种小问题上多费一点脑筋。 “软件应该怎么设计”,你就知道,人家不知道你知道。这个问题小吗,我看还是要看什么样的系统的吧,站着说话不腰疼,大家观点不一致而已,我说你说这话明显是“程序员很普遍的臭毛病” ![]() |
|
返回顶楼 | |
发表时间: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:有时多易少,少弈多... |
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2007-02-12
呵呵 没听明白就算了
|
|
返回顶楼 | |
发表时间: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”。因为这个查询最多就返回一百条左右记录。 |
|
返回顶楼 | |
发表时间:2007-02-12
没有必要重构成那样吧,原来的做法未尝不可
简单至上,这是我推崇的原则 |
|
返回顶楼 | |
发表时间:2007-02-12
ha 看了ajoo最近的几贴,感觉你们那里代码重用到影响别人理解代码的程度了。
不过说回来,SQL代码确实不方便重用。我一开始也觉得这类code不爽,不过现在基本想通了。一方面读这样的code方便,另一方面就算要修改也没几个连动着一起改了就完了。 |
|
返回顶楼 | |