日期:2014-05-17  浏览次数:20577 次

代码复用和重复代码的选择 你们都会遇到的!
我开发的一个模块:
java文件 TestService.java TestDao.java
jsp文件 a.jsp b.jsp
诸如这些文件,现在在别人的模块上要调用我的Service和Dao,也返回a.jsp,b.jsp
原则上,直接调用就行了,不用重写一样的代码。

现在这功能有特殊条件,这个流程要新加一些判断在Service,jsp显示的时候也要一些判断。比如这个流程要显示新加的属性用户详细信息userDetail,在jsp中<c:if test="${empty userDetail}">判断是否显示userDetail

现在有2种解决办法:
1、复用java和jsp文件,但是要在这些common文件上加判断
2、cope这些java和jsp文件,加入这些判断,改动不是很大

缺点:
1、复用可以节省代码,如果要调界面只需改这个java或jsp,但是如果有很多这些特殊条件,在service、dao和jsp中就需要加大量的if... if... if...
2、增加了改动不大的java和jsp文件,不能复用

请问有经验的,用哪种方法,有没有好的解决方案?希望有经验的人谈下看法,先谢谢了。
我倾向第一种,可是新功能很多的话要加很多if...判断,比较纠结。

------解决方案--------------------
dao那么应该只是获取数据模型的,而service里面才是具体逻辑。所以不同的业务应该有不同的service,及时他们处理的后台数据都是一个数据模型。
------解决方案--------------------
理论上来说如果最完美的情况,当然是把会被多个地方调用的部分单独出来;然后考虑到所有可能调用的情况;做出通用方法;
------解决方案--------------------
根据MVC的思想。不同的业务逻辑组件自然是要分开的。这样便于以后的维护。而且虽然说需要写些比较类似的。但是并不是说他们是通用的,这个并不会花太多时间,只要把原先的copy下改改就可以了。
这个必须分开。要不然以后系统需要升级维护了或者出bug了再回来看代码的时候,那时候就是牵一发而动全身了。这样的做法是不推荐的。