论坛首页 综合技术论坛

糟糕的代码设计真的让人很心烦..

浏览 26214 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-13  
laorer 写道
这个应该有点难度吧...
那要写多少个小方法,而且有些代码内聚度比较高的,为什么要拆成多个方法

我目前的项目,产品代码平均每个方法不到5行
0 请登录后投票
   发表时间:2008-08-14  
吃力不讨好的活还是忍了吧

下次项目技术准备时,提出自己的想法
0 请登录后投票
   发表时间:2008-08-14  
mingr6370 写道
吃力不讨好的活还是忍了吧

下次项目技术准备时,提出自己的想法

这话说得很有意思
下次项目,凭什么别人就会听你的?
你不在真实的项目里尝试过,你就不会知道该怎么做才能让代码不变坏甚至变好
于是下次项目你还是没辙
0 请登录后投票
   发表时间:2008-08-14  
gigix 写道
我目前的项目,产品代码平均每个方法不到5行

五行?我还有好长的路要走,至少暂达不到
0 请登录后投票
   发表时间:2008-08-14  
如果没有老大肯推动重构这件事情,奉劝兄台还是独善其身的好。
这些都是吃力不讨好的事情~~~
0 请登录后投票
   发表时间:2008-08-14  
leonhe_cn 写道
公司规模太小了吧,我上次到新公司报道,一看项目和楼主一样连spring都没用,马上走人了呵呵


。。。受不了。。。
0 请登录后投票
   发表时间:2008-08-14  
只要不出问题,重构还是算了吧,中途改这个是大忌。

0 请登录后投票
   发表时间: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();
}

 这样来得到对象实例..

 

0 请登录后投票
   发表时间:2008-08-14  
有想法应该要沟通,项目进行中想做大规模的重构,最好是要取得领导的支持,所有人达成共识才行,不然就乱套了
0 请登录后投票
   发表时间:2008-08-14  
习惯问题,只能慢慢改进的。
就算是你运气好,有机会完全重写,
过一两年回头看,还是会发现很多垃圾的。

最近这十几年,是软件开发思想大发展的年代,
从面向过程,到面向对象,
到设计模式,再到面向接口, 直到敏捷的TDD和重构,

以致每次我回头看若干年以前自己的代码时,
在不忍目睹的同时,也骄傲自己的进步。

0 请登录后投票
论坛首页 综合技术版

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