锁定老帖子 主题:糟糕的代码设计真的让人很心烦..
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-08-13
laorer 写道 这个应该有点难度吧...
那要写多少个小方法,而且有些代码内聚度比较高的,为什么要拆成多个方法 我目前的项目,产品代码平均每个方法不到5行 |
|
返回顶楼 | |
发表时间:2008-08-14
吃力不讨好的活还是忍了吧
下次项目技术准备时,提出自己的想法 |
|
返回顶楼 | |
发表时间:2008-08-14
mingr6370 写道 吃力不讨好的活还是忍了吧
下次项目技术准备时,提出自己的想法 这话说得很有意思 下次项目,凭什么别人就会听你的? 你不在真实的项目里尝试过,你就不会知道该怎么做才能让代码不变坏甚至变好 于是下次项目你还是没辙 |
|
返回顶楼 | |
发表时间:2008-08-14
gigix 写道 我目前的项目,产品代码平均每个方法不到5行
五行?我还有好长的路要走,至少暂达不到 |
|
返回顶楼 | |
发表时间:2008-08-14
如果没有老大肯推动重构这件事情,奉劝兄台还是独善其身的好。
这些都是吃力不讨好的事情~~~ |
|
返回顶楼 | |
发表时间:2008-08-14
leonhe_cn 写道 公司规模太小了吧,我上次到新公司报道,一看项目和楼主一样连spring都没用,马上走人了呵呵
。。。受不了。。。 |
|
返回顶楼 | |
发表时间:2008-08-14
只要不出问题,重构还是算了吧,中途改这个是大忌。
|
|
返回顶楼 | |
发表时间:2008-08-14
neo_q 写道
其实初步看来你的这个问题是可以解决的。如果你可以确定你得到dao的方式是以factory的形式来得而非直接new,那么你在这里使用proxy,返回一个proxy的instance,在proxy里面判断是否已经init过了,没有做过就做init,如果已经做了则直接调用target对象的方法。
这样既可以满足你每次不调用root class的方法也可以不让你的同事的代码受到影响。
public Abstractxxxx(Class clazz){ try { _BaseRootDAO.initialize(); Class[] type = new Class[]{}; Class[] arge = new Class[]{}; Method method = clazz.getMethod("getInstance", type); dao = method.invoke(null, arge); } catch (Exception e) { e.printStackTrace(); } } 业务类继承它,在构造方法中执行: public XXXService(){ super(XXXDAO.class); dao = (XXXDAO)getDao(); } 这样来得到对象实例..
|
|
返回顶楼 | |
发表时间:2008-08-14
有想法应该要沟通,项目进行中想做大规模的重构,最好是要取得领导的支持,所有人达成共识才行,不然就乱套了
|
|
返回顶楼 | |
发表时间:2008-08-14
习惯问题,只能慢慢改进的。
就算是你运气好,有机会完全重写, 过一两年回头看,还是会发现很多垃圾的。 最近这十几年,是软件开发思想大发展的年代, 从面向过程,到面向对象, 到设计模式,再到面向接口, 直到敏捷的TDD和重构, 以致每次我回头看若干年以前自己的代码时, 在不忍目睹的同时,也骄傲自己的进步。 |
|
返回顶楼 | |