zoukankan      html  css  js  c++  java
  • 【重构学习】11 大型重构

    好了,前面所有的都是很简单的例子,现在开始的是大型重构。

    对于大型重构来说,情况复杂多变,耗时也会很长,前面的简单重构大多是在一个小时内可以完成,但是对于大型重构来说可能需要几个月,甚至数年。如果是一个运行中的系统,重构起来只能每天一点点去慢慢重构。

    恕我直言,在国内恐怕这样的公司也很少。所以我们要自己养成随时重构的习惯,不要挖坑给自己埋最好。没谁能给你这么长时间重构,特别当你是个低端程序员的时候。你得相信,你所有偷懒的举动,都会给你以后的工作带来麻烦。除非你明天走人了,那么你的锅可能就给我背了,等你到了新的公司,你又发现你也成了一个背锅的。

    1、梳理并分解继承体系

    修改点:某个继承体系同时承担两个责任。如果继承体系中的某一特定层级上的所有类,其子类名称都以相同的形容词开始,那么这个体系很可能就是承担着两项不同的责任。

    做法:建立两个继承体系,并通过委托关系让其中一个可以调用另一个。

    动机:混乱的继承体系会导致重复代码。

    好吧,简单来说,你可以理解为桥接模式。

    2、将过程化设计转为对象设计

    修改点:就是出现了C语言式的代码

    做法:将数据记录变为对象,将大块的行为分成小块,并将行为移至相关对象中。

    3、将领域和表述/显示分离

    修改点:某些GUI类中包含了业务逻辑

    做法:将领域逻辑分离出来,并为它们建立独立的领域类

    4、提炼继承体系

    修改点:你为某个类做了太多工作,其中一部分以大量条件表达式完成

    做法:建立一个继承体系,以一个子类表示一种特殊情况

    小总结:

    好吧,上面四个点写得很概括,但是其实包括了很多东西。

    越复杂的东西反而讲起来越简单。

    就像我说我们来写个注册系统吧,多简单,但是实施起来其实也不简单。

    很多时候我们都不愿意去改别人的代码,因为可能业务就已经很复杂了,再加上可能他也写得烂。

    你唯一必须做的是,至少保证自己的代码别人维护起来很轻松,与君共勉吧!

  • 相关阅读:
    Backbone的 listenTo 和 on
    前端工作流程
    Zepto源码笔记(三)
    Zepto源码笔记(二)
    Zepto源码笔记(一)
    Canvas基础学习(一)——实现简单时钟显示
    常用排序算法之JavaScript实现
    NodeJS学习笔记(一)——搭建开发框架Express,实现Web网站登录验证
    浏览器基础知识
    学习Vim 全图解释
  • 原文地址:https://www.cnblogs.com/vvjiang/p/5123022.html
Copyright © 2011-2022 走看看