目录
一、什么是重构
二、我在重构什么
三、如何看待重构
四、历史文章指路
一、什么是重构
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。 重构目标: 改进软件设计使软件更容易被理解; 帮你找到bug; 提高软件的开发速度; 重构时机: 在添加新功能时进行重构; 在修改bug时进行重构; 在代码复审时进行重构; 到了最后的交付期限,不进行重构;
以上是软件开发领域的重构定义,在我的理解里,重构也可以运用到其它领域,比如文档重构,甚至知识体系重构。
我最近突然意识到我似乎不断在重构,这对我来说是好事还是坏事呢?我还没有一个非常准确的答案,我想先来分享下我对重构的一些看法。
二、我在重构什么
文档重构和代码重构。
2.1 文档重构
我在之前的一篇文章【笔记总结】我是如何做笔记的分享了我是如何做笔记的,我从大学起就开始用有道云笔记,截止到今天有2000篇左右的笔记了。
在这段期间,我做了无数次大大小小的重构,在最近一次重构中合并和删除了很多笔记。
我重构的时机是是什么,可能是在找一个笔记的时候,发现不是一下子就能找到,找到后还看不懂曾经自己写的啥,这时就触发了重构的点。
首先为什么找不到这个笔记?原因是它所在的目录位置并不是我现在所期望的位置,随着时间的推移,自己的认知体系结构越来越清晰,那么以前一些没有清晰定位的东西,我现在就要把它放到正确的位置。随之带来的,就是我不断的重新设置目录,将笔记放到新的目录里。
我最近的一次大重构,是将我之前按月按天为维度做的笔记给拆解成按照知识点划分了。我为什么按月按天为维度做笔记呢?这是因为以前学的东西太分散,没有完整的知识体系,几乎是想到啥就学啥,然后干脆就以这种时间为维度作为记录了。
这种做法的坏处是什么?笔记混乱且冗余,我经常发现做了相同的笔记,时间跨度还挺长,不过这也说明我对这快知识点并没有完全掌握,可能在一年两年后重新遇到这个点,还是想不清楚。
那另一方面好处是什么?可以按照时间维度见证自己的成长,我就时刻感叹,“我原来这么牛逼,有这么多收获,我早时间就学这个了啊,666”。
当然,现在我都是按照知识领域来划分了,每个小点尽量做到精准定位。
2.2 代码重构
我建立的一个Learn-Java的项目来学习Java,这还是在2020年初的时候建立的,看commit的时候真是惨不忍睹,哈哈哈,毫无规划,想到啥写啥,一通瞎改。
后面因为一些原因,把整个项目从github删除了,后面重新规划一波,现在主要分为Java-Base、Java-web、Vue-View三大模块,大方向已经规划好了,现在我要克制住commit,尽量少改动,把每次commit都当成一次版本上线,慎重对待。
三、如何看待重构
重构的触发点必然是当下的设计无法满足未来需求,这个有可能是有了更好的方案,因为自己变得更强了,也可能是迫不得已的重构,因为之前设计得太烂了,必须推倒重来。
无论是出于哪种原因做的重构,重构所需要花费的精力和资源都是巨大的。
写代码,做笔记,建设知识体系,先设计好再做,永远是稳健的做法。那么如何能在一开始就做好设计呢?我现在也没有一个好的方案,但是至少意识到了这个问题,也是一个非常好的开始了。
我们可以有一个好的开始:考虑的不仅是当下,更是未来,可以说活在未来,在未来的角度来审判当下的设计。
看到这篇文章的小伙伴,可以观察下自己是不是也经常重构,以及想一下,重构对自己的影响。
我们下期再见~