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

来源:互联网 发布:淘宝买望远镜 编辑:程序博客网 时间:2024/06/05 14:27

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


重复代码


第一个例子:


第一个方法: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查询关联就可以处理。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 没满月宝宝吐奶怎么办 八个月宝宝有点拉肚子怎么办 4个月宝宝拉水怎么办 2岁宝宝消化不好拉肚子怎么办 两岁宝宝老拉肚子怎么办 2岁宝宝拉肚子老不好怎么办 2岁宝宝一直拉肚子不好怎么办 5天新生儿拉稀水怎么办 4天新生儿拉稀水怎么办 新生儿40天拉稀水怎么办 一周多的宝宝拉肚子怎么办 出生半个月的宝宝拉肚子怎么办 刚出生几天的宝宝拉肚子怎么办 刚出生的宝宝拉肚子怎么办 出生八天的宝宝拉肚子怎么办 刚出生婴儿拉水怎么办 三岁宝宝一直吐怎么办 3岁宝宝一直吐怎么办 5个月宝宝一直吐怎么办 新生儿睡反了觉怎么办 吃母乳奶流量大怎么办 两个月宝宝有痰怎么办 婴儿瞌睡睡倒了怎么办 侧切伤口崩开了怎么办 脐带30天未脱落怎么办 洗眉结痂不掉怎么办 新生宝宝生殖器下面破皮怎么办 脐带未脱落渗血怎么办 车停店门口贴发单怎么办 有人要打我我该怎么办 很笨怎么办工作做不好 脸被电焊烤了疼怎么办 脸过敏痒的不行怎么办 领导想让你辞职怎么办 领导强吻我了怎么办 赫曼夏天温度高怎么办 近视看3d电影怎么办 有声挂图撕坏了怎么办 主机没有放光盘的设备怎么办 装显卡是没光驱怎么办 电脑机箱光盘总是出来怎么办