重构之代码重复 语义一致的逻辑应该只有一个实体

 重构之重复代码:

1.(重复代码是)语义一致的逻辑
反例:语义一致的逻辑产生了多个实体
缺点:如果你为语义一致的逻辑产生了多个实体,那么当需要修改这个逻辑时,你必须保证同时修改所有的实体,并确保它们是一致的。否则,程序就会产生bug。无疑,这么做会额外增加很多的不必要的工作量。

原则:语义一致的逻辑之应该只产生唯一实体,在需要的地方进行调用。

反面案例:
jdbc操作数据库时,在每个访问方法中写driverClass, url, username, password。

2.(重复代码是)非语义一致的逻辑。
当你的程序中存在多个实体,表示的是非语义一致的逻辑,当修改其中一个不需要维护另一个,因为它们本身就没有语义一致的要求。

重构之switch语句:

程序中出现switch语句,就是不好的设计吗?

一个需要重构的switch语句的案例
Movie类
priceCode域
getCharge(int daysRent):
存在switch语句:
根据priceCode域的值的不同计算租片费用。
其中每个分支中的逻辑的共同点:
输入是租期,输出是费用。

方案:
使用状态模式或策略模式对该switch语句进行重构。

posted @ 2019-05-08 17:00  没有理由不会呀  阅读(299)  评论(0编辑  收藏  举报