Java版八荣八耻

旧时模样 提交于 2020-01-24 08:39:07

以动手实践为荣,以只看不练为耻
以打印日志为荣,以出错不报为耻
以局部变量为荣,以全局变量为耻
以单元测试为荣,以手工测试为耻
以代码重用为荣,以复制粘贴为耻
以多态应用为荣,以分支判断为耻
以定义常量为荣,以魔法数字为耻
以总结思考为荣,以不求甚解为耻

多态应用:
动物–叫
鸟-叫—歌唱
狮子-叫–咆哮
猫-叫–喵喵喵
反思,项目里的抽象和继承往往需要花比较多的时间来思考,在真实业务场景中,要先完成实现,再做代码结构的优化,往往在完成了一大堆的ifelse之后,再来做这种层面的优化,工作量基本相当于再写一遍,做的人也比较少。
实例分析:

Position
ClosePosition  ForwardPosition   OpenPosition
这三个对象,从理论上来说是可以通过多态来做的,但在真实项目中就是采用了一个position,并使用不同的变量名来做区分,
ifelse使用得非常之多。
现在来分析,重构该怎么做,会优化多少?
首先position提供公共的方法,由三个子类去实现,在service层只要将对象转为对应的子类就能完成。
很显然,代码会变成这样
Position p;
if  (A) p=new ClosePosition();
else if (B) p=new ForwardPosition();
p.add(trade);

优点:公共的代码可以放在父类的方法里,子类也可以有自己独特的实现,service会变得非常清爽。
不会像现在一样,从trade到position的思路就很麻烦,再从position到具体的处理就更加恶心了,重复代码极多。
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!