架构师训练营第三周 - 代码重构

发布于: 19 小时前
架构师训练营第三周-代码重构

重构的由来

作为一个架构师,平时写写核心代码(核心代码:框架或类似框架的被依赖模块)review下开发同学的代码。

随着面对的业务越来越复杂,代码的扩展性跟不上业务演进的速度,添加新功能速度越来越慢,影响范围越来越大,有种加不动,不敢加的境遇。那这时候我们就需要重构当前的代码,使之获得面向当前业务的扩展性。

有的同学可能有疑虑了,我们的代码在设计时,不是已经是可扩展的了吗,怎么还要重构?

确实,我们的代码已经具有一定的可扩展性了,可以支持一定的业务演化。但是,同学别忘了,业务的变化速度往往会超过我们的预期。而且,我们在设计代码时,不会去果度设计,我们要有演化思维,不需要一次就把所有情况都覆盖到,那样是不可能的,也不现实。所以代码重构是避免不了的。

如何重构

讲完了为什么要重构,接下来就要说说如何重构了。

重构,改善既有代码的设计

我们知道要写出好的代码需要遵守设计原则,设计原则是程序员写出好代码的内容心法。那只有内功心法行不行呢?看看《倚天屠龙记》里的张无忌,初期身怀九阳神功,内力深厚,但和别人过招,总吃亏,一句话,无打法。软件中的打法是什么呢,模式啊!设计模式,这个站在C位的靓仔,要好好发挥它的功能了。

设计模式

  1. 每种设计模式都是一种通用问题的解决方案。这种问题在我们的环境中,反复出现

  2. 设计模式是一种可重复使用的解决方案

设计模式的四组成要素

  1. 模式的名称

  2. 待解问题

  3. 解决方案

  4. 结论

设计模式按照功能划分

  • 创建型

  1. 工厂方法模式

  2. 抽象工厂模式

  3. 建造者模式

  4. 原型模式

  5. 单例模式

  • 结构型

  1. 适配器模式

  2. 装饰器模式

  3. 代理模式

  4. 外观模式

  5. 桥接模式

  6. 组合模式

  7. 享元模式

  • 行为型

  1. 模版方法模式

  2. 策略模式

  3. 观察者模式

  4. 迭代器模式

  5. 责任链模式

  6. 命令模式

  7. 备忘录模式

  8. 状态模式

  9. 访问者模式

  10. 中介模式

  11. 解释器模式

还有一些新增不属于三大类的,如并发模式。

这么多模式,我们如何使用呢?

有些软件要求应用中只有一个实例,如打印机这种,这时,单例模式就可以派上用场了。

对于像树形结构这种,节点分两种,有子节点的与没有子节点的(又名叶子节点),可以采用组合的方式,实现结构。

对于具体算法不明确的,可以采用策略模式。编程时,依赖接口;运行时,依赖具体实现。

如我们熟知的JUnit单侧框架,TestCase类中的runBare方法用到了模版方法模式,TestCase和TestSuite形成了组合模式,TestSetup和RepeatedTest都实现了TestDecorator,形成了类似于jdk中输入输出流的装饰者模式。

重构后好处

代码重构之后,添加新功能更简单,代码更易读懂和维护,代码更健壮。

所以,学习设计模式吧后浪。

用模式武装起来的程序员,都是架构师!

用户头像

草原上的奔跑

关注

还未添加个人签名 2018.05.04 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第三周-代码重构