【送给新手】重复代码解决示例一

注:个人言论,仅供参考,欢迎指正。


重复代码


第一个例子:


第一个方法:getCount



第二个方法:pageQueryKbdb



上面两个方法中,第一个是求总数,第二个方法是分页查询详细内容。

 

这两个方法的SQL中除了select count(ID)不一样,其他一模一样,这样的代码,如果将来SQL变了,你需要同时修改两个地方,如果没有注意,两个SQL不一致,结果会差很多。


上面的的SQL完全可以从from KBJCJL这里开始单独创建一个方法,方法返回一个String类型的SQL即可。

将上面的两个方法修改后如下:


增了一个方法getKbdsSql

 

 


原来的两个方法修改为:

 

 

上面这种修改方式很容易,主要是因为这两个SQL差异太小,但是如果JAVA处理SQL时,不同的地方很多,可能需要上面的方法再拆分成多个方法重新组合。

 

这个类中,还有多处类似的代码,看下面的GetClCount方法:



你觉得这个方法眼熟吗?

但是这个方法写的和前面的两个方法不一样,但是逻辑呢?

 

其实逻辑一模一样,而且结果也一样,并且这里写的switch-case比上面的要规范,为什么?

因为这里的case是从1到18排列的,并且其中的13、14是用default处理的。

只有13对应的值不一样

所以这看着不一样的代码却做着几乎相同的事,非常的不合理。

完全可以在提取的方法中,单独写出case 13进行处理。

然后GetClCount方法完全可以调用修改后的方法。

 

记住:

a.      如果有一段代码出现了两次,如果代码很短(4,5行),而且结构不是很好,可以直接复制。如果代码很长,将代码独立出来。

b.      如果方法出现了两次以上,将代码独立出来。

c.      不同类如果调用相同的方法,可以独立到一个公共类中,所有的类都调用这一个类的方法,而不是把该方法分别复制到每个类中。

 

不知道你们觉得上面的方法修改之后感觉怎么样??????

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如果你觉得这样就可以了,那你就错了。

 

你有没有注意到这样的代码:



像这种代码,如果维护起来,极其的不方便。

你应该注意到这里的代码有一个特点,就是case对应的值,并且这些值只是在SQL中使用的,那么为什么不将这种对应关系存入到数据库中呢?

如果将上面的关系存入到表中,那么完全不需要switch处理,直接用SQL查询关联就可以处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isea533

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值