写代码的,谁没在凌晨三点对着“祖传屎山”干过瞪眼?刚拉下分支那会儿,DOM树干净得像刚熨过的衬衫,CSS规矩得连个多余的空格都没有。好景不长。就俩月。新功能一股脑往里灌,class名开始打架,注释厚得能直接拿去给文物做碳14测定。后来呢?谁敢随便碰老模块?全在填坑。埃利奥特·拉斯蒂·哈罗德的《重构HTML改善Web应用的设计》,说的就是这档子事儿。书里不画大饼,不教你怎么从零搭个赛博朋克风官网。它就盯着那些缠成一团的旧代码,教你怎么拿镊子,一根一根往外挑线头。这书主要给前端和管项目的看的。但哪怕你连<div>都敲不利索,翻两页,心里也能落点地。说白了,就是教你怎么跟烂摊子和平共处。
书里一共攒了七十多个手法。前头两页翻过去,干瘪瘪的,跟查字典似的。别嫌烦。往下翻,你就明白,作者教的其实是“找穴位”。核心就一句话,原封不动搬出来:“重构准则将帮助你一次一小步地修改你的代码,从而减少了开发过程中的风险。”熟不熟?太熟了。真干起来才知道,多熬人。需求一压,谁不心想着删了重写算了?敲键盘是痛快。可你敢赌吗?漏掉一个节点,页面直接白屏,连撤销键都找不着。卡脖子的,从来不是技术。是明知道路在哪,脚却像灌了铅。我读到这节,光标在删除键上飘了半分钟,愣是没敢落下去。重构这东西,哪有魔法棒一挥全变好。全凭跟自己死磕。拆。拆成十几步。走一步,测一次。页面没崩,再挪下一步。看着笨。但能保命。它没吹嘘怎么写出新代码,只教你怎么护住老代码的底线。这玩意儿,才是老鸟们防身的护身符。
什么时候该动刀?什么时候该收手?作者掰扯得很透。很多团队搞重构,纯粹是项目卡死了,或者老板在背后催命。这时候硬塞代码,十有八九,能把能跑的轮子拆散架。作者不玩虚的。直接亮触发器。改个页面,牵扯出三个八竿子打不着的模块?或者同一段结构,重复写了三遍以上,每次改都手抖?警报拉响了。这时候再动手,才对路。过日子不也一样?总等万事俱备。等来等去,全耗在瞎等里。该下手就下手。该撤就撤。这火候,比光有一腔热血管用得多。当然,别照搬。业务天天变阵、疯狂试错的团队,死磕重构反而拖后腿。这账,得自己算。
HTML排版,其实就是脑子里那团乱麻的投影。标签套标签。越深,逻辑越死结。收拾页面,顺的就是自己的思路。作者没把技术往玄学上扯。全是大白话。你看那些改代码的招数,动机实在得掉渣:为了让人一眼看懂结构;为了以后加功能不扯皮;为了加载速度不被一堆冗余嵌套拖垮。把这些土办法挪到生活里,嘿,全是一回事。衣柜塞爆了,每天的工作流理不顺,手机里几千张截图懒得删。底层逻辑都一样:先看清现状。小步替换。最后,留点喘气的空儿。道理听着轻巧。真要落到纸上,拼的就是耐心。能不能沉下心,一步步拆。
合上书,我才摸透“干净”俩字儿。不是抠像素的强迫症。是给以后的折腾,留条活路。代码会老。需求会变。能活下来的项目,架构从来不是最花哨的。是舍得下刀子,不断修剪。下次再对着一堆乱码发愁,别急着大刀阔斧。试着,只改一行。看效果。反正我觉得,写代码到最后,拼的不是谁更猛。是更怂。怂得懂克制。才能走得远。