未使用代码
在代码库中,尤其是祖传代码库中,我们常常能找到不少未使用代码、甚至文件。
产生
- 写错的,自然产生的
- 重构时残留的历史代码
- 重构后未删除原来的文件
- 复制粘贴的残留代码
恶果
- 没注释的直接干扰代码理解
- 注释了也占位置,影响正常代码阅读
- 影响全局搜索,可能全局搜索出来还在用的只有一两条,剩下的都是未使用的代码
- 如果全局搜到了根本没引用的陈年文件,你可能还会傻乎乎地浪费时间把它改了
- 最重要的是,这些代码 99% 以后都不会再用上了,但是你却总觉得会有用上的一天
注意,在多人合作的代码库里,以上问题会被成倍放大。
清除
lint 工具会提示代码中未使用变量,灰了就删了吧。
重构时历史代码不需要保留,至少不需要一直保留。经过靠谱测试的代码上线后一段时间都没问题的话,历史代码就可以删掉了。
之所以要快删,是因为短期内不删掉的话,时间久了也会忘记他保留的原因,导致永远都不敢删除,这十分致命。
我在这鼓吹放胆删除也肯定是有原因的,这些被删掉的代码,如果有一天真要用上,要找回来,那方法也有的是。
找回代码
最传统的方法可以用 git 命令行查找。
git log
其实可以根据关键词筛选 diff 到内容,所以只要记得某个变量名就可以用 git log
搜索相关提交。
当然这个方法还是有点麻烦,如果你用的是个靠谱的 IDE,你可以很方便地看到一个文件的修改记录。
例如在 VSCode 中,左侧的 TIMELINE 就是你的文件时光机。
可以注意到,除了 git 的 commit 记录,本地保存都会被备份,而且记录时间非常长,我翻了一下一个老项目,看到几个月前的本地修改都仍然保留着。
也因为这个记录机制,即使你不小心把文件删了(例如 git 没有提交,手贱直接把修改放弃了),VSCode 也能帮你找回来,Ctrl + shift + p 然后输入 Local History: Find Entry to Restore
即可。
分支丢失
虽然有一点跑题,但是找回代码说了,就顺便说说怎么找回分支吧。毕竟也罕见地存在着分支没 push 还被手贱删掉的情况。
git 是一个很安全的系统,只要你 commit 了,不整什么骚操作的话提交是总能找回来的。
短期内丢失的分支(默认好像是 90 天内),可以通过 reflog
找回来。
5c64ce5
是原来 test-reflog 分支的 SHA,然后我们直接 checkout
过去就能找到原来分支的内容了。
你也可以在 Fork 中通过图形界面直接观察到 reflog
保留的数据,下图可以看到两次 rebase 残留的记录。
就先写到这了,对代码断舍离,清爽的代码库,你和你的团队都值得拥有。