写下一行代码的时候,就知道总有一天它会被重构掉,也许是你自己也许是别人。
围场打猎
古时候的每到春天或秋天,皇帝就要进行一次春狩或秋狩活动,该活动就在皇家的围场中进行。
重构就像一次狩猎活动,程序员总会定期的去做,在代码腐烂之前。
但别忘了,重构之前先选定你的围场,划定你的边界,系统膨胀到一定程度后进行完全的重构几乎不可能了,划定围场是该活动成功的前提。
一切进入围场的代码就是猎物,活捉亦或杀无赦。
扫雷
划定围场后,开始进入前还有一项重要的工作:了解其危险性,做好准备。
也许你只打算在围场中打打野兔、小鹿之类的轻松活动,却不知道里面隐藏着老虎、豹子。
进入狩猎活动前,搞清楚围场中的雷区,小心的监视中那里的老虎、豹子,在你做好足够的准备前不要轻易招惹它们。
高地战
战争中,谁占有高地,谁就取得了战场的主动权。
重构是一场战争,围场中的代码就是战场,高地就是关键代码路径上的核心业务代码。
重构从取得所有制高点开始,才能迅速把握战场的全部情况。
种下向日葵
《植物大战僵尸》游戏中最重要的植物是什么?向日葵,没有它就没法种其他植物来抵御僵尸来袭。
软件开发中,一不小心程序员就会制造大量的僵尸代码或者是让代码变成僵尸的 T 病毒。
向日葵就是项目代码的规范,抵御 T 病毒的疫苗,让你重构的代码都在向日葵制造的太阳的照耀下吧。
大战僵尸
代码库里四散着很多小段的,甚至大片大片的被注释掉的代码,这就是僵尸代码。
优秀的程序员知道,代码就是债务,越少越好,僵尸代码也是代码,它们增加维护的难度、降低信噪比、甚至引发歧义。
最后
说下为什么重构:对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。
但有时候既有代码实在太混乱,重构它还不如重新写一个来的简单。
作出这种决定很困难,一直以来我也没有找到判断重构还是重写的清晰分界线。
因此只要划入围场的代码,既可重构(活捉驯化)也可重写(杀之),只在当时当刻的当机立断吧。