须要给全部查询页面加上筛选条件缓存功能,查看了一下现有代码,发现每一个页面都有大量冗余的关于本地存储和远端存储的代码,而且每一个页面的存储逻辑都略有不一样,想了半天,愣是一行代码没写下去。我离开座位,就一直想,究竟是什么东西在妨碍我,最后全部矛头都指向一点——缺乏通用流程。ios
项目在产品阶段时,定位的是一个实施查询平台,其中有多个查询页面,每一个页面的查询功能点不一样,我跟另外一个小伙伴一人负责一个查询页面的开发。因为时间紧任务重,咱们没有作好项目的总体规划,没有制定规范,就直接开撸代码,在一开始就给本身挖了一个大坑。缓存
当时我还在实习,只作过一些小项目,无论是对框架的理解,仍是在项目的经验上,都有硬伤,体如今:安全
重构应该针对局部的内容作针对性的代码重写,这样才能保证安全且高效,这一点对大型项目尤为重要。我就在这里栽了跟头,此次重构的项目已经十分复杂,而我愣是硬着头皮重写了80%的代码,一次性重构了多个功能点,致使重构后的变化点暴增,甚至一度让我以为我已经控制不过来了。同时,过多的功能变化也给测试带来了很大的麻烦,须要耗费大量时间作一次总体的回归测试。这也是重构项目上线后的第一周,bug频现的主要缘由。框架
因此,重构以前必需要想好本次重构的功能点,最好针对某一个功能点作单独的重构,而不是一次性的重构多个功能点。测试
此次重构的核心工做就是抽离冗余逻辑到全局的通用流程,充分利用:设计
以此,像一个系统同样,为整个项目提供通用的处理流程3d
后悔没有先读《重构—改善既有代码的设计》这本书,若是我知道:router
我就不会一时冲动把80%的代码重写,也不会一次重写多个复杂功能点cdn