【送给新手】重复代码解决示例一
来源:互联网 发布:淘宝买望远镜 编辑:程序博客网 时间: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查询关联就可以处理。
- 【送给新手】重复代码解决示例一
- 【送给新手】重复代码解决示例二
- 送给IT的新手
- 表单对齐,送给新手~
- Android 新手listview小示例(一)
- 送给所有的共享新手
- 送给所有的共享新手
- 我一直在努力 送给所有的共享新手 (一)
- python文件去除重复的代码示例
- Action Bar示例代码 (一)
- 神经网络一:介绍,示例,代码
- Action Bar示例代码 (一)
- tensorflow新手必看,tensorflow入门教程,tensorflow示例代码
- 送给所有共享软件的新手[zt]
- 送给所有的共享新手(转)
- 送给理财新手的十五句话
- 解决android代码中重复写findViewByid()
- 通过继承消除重复代码的简单示例
- Git操作实战示例(四)
- thinkpad qq不能自动隐藏等类似该问题解决方法
- PHP读取mssql2008,json数据中文乱码
- connectify中文版有效避免wifi辐射
- html与cgi脚本的配合使用
- 【送给新手】重复代码解决示例一
- linux脚本编写基础
- A*寻路算法与它的速度
- cocos2d-x中CCScrollView和CCMenu触摸优先级的解决方案
- 转载:使用命令行启动VirtualBox虚拟机
- slave坏掉的例子 不能抓master了
- Java基础(1)--概念
- Csharp:asp.net CheckBoxList databind
- Eclipse 中web项目需要依赖项目的解决方法