Leebber

Lyu Sen's Personal Blog Website

0%

Refactor-Code-Every-Three-Month

三个月一重构

game

我还记得很早以前我第一次改已有的代码,那是一个api接口。我还记得那时候需要的是对不同的接口做api传递,要带着它的cookie。那是我刚开始写代码。所以我给所有的api都写了一个转接代码。之后回去看的时候,我才意识到,ok,一个转换函数就可以搞定所有的情况。于是我把它重写到了一个函数之中。虽然那个函数还是很大,不过比之前5-6个函数要舒服多了。
第二次重构是第二个项目业务逻辑大调整。这个倒是没什么说头,因为整个业务逻辑变化了,必须要重写。之前的demo模式不可行,于是删掉了一大半的代码,开始重新写了。其实这很好,当初写的时候有很多解法都太直接了,有很多过程可以抽象化的,重构就帮我解决了之前的问题。
第三次重构还是第二个项目,我学习了async/await写法,代替了之前的promise写法。async比promise好的一个地方就是promise链处理条件过程很复杂,会写出树型的结构。如果用async来写就能避免这个问题。多提两句,async function会将后面的返回结果也变成promise,所以处理同步过程的时候需要用function和promise而不是直接用async。而且new Promise里面有些部分的代码也是直接执行。
然后就是目前在写的项目。这个项目我一开始就设计了是比较抽象的模式。但这个项目也经历过重写,最重要的一次就是引入了multi processing。多进程加入了很多其他的控制元素,信息交换元素。
之前的一次,我重写了其中很复杂的一部分,加入了复杂的异步错误处理,异步的数据库不同步比较复杂,还加入了错误重试,系统的稳定性增加了。
最近的这次重写主要是agent worker模式的改写。修改的更加稳定。以及整体的错误处理。

每次重写都能发现很多好的模式将来可以复用,每次重写都能发现很多不好的习惯需要去掉。我觉得重写就是之前积累的一次总爆发。可惜,就是太累了。