先看这个功能是否仍在产生可观测的维护成本,再看它是否还承担着未被替代的对外承诺。如果两项都成立,留用并补上说明;如果只是“代码已经写了”,下线通常比勉强保留更省事。下面给出两种条件下的不同选择和具体动作。
判断依据不是当初的需求文档,而是当前有没有真实入口在用它。假设一个桂林本地服务站的预约留言模块,原需求方已取消该项目,但页面仍有访客提交记录,且后台还有人定期查看。这时直接删除会切断一条仍在运转的通道,代价是客户投诉和人工补录。
可执行的动作是把它从“待完善”转为“冻结形态”:保留现有表单和提交逻辑,不再新增字段、不再改样式,只在提交失败或数据写不进时做最小修复。同时在前端加一句简短说明,让访客知道提交后的处理方式。这个动作的结果是维护范围被限定,后续排期里它不再和新增需求争资源;如果连续观察一段时间后提交量归零,再进入下线评估。
要注意,访问量归零不能单独证明可以删。缓存、入口被折叠、外部链接失效、统计脚本本身没加载,都会造成同样的现象。先分别核对入口是否可达、日志是否正常记录,再决定。
如果这个功能没有真实入口、没有对外承诺、也没有别的模块调用它,那它只是一段占位置的代码。继续留着会让后来的人误以为它是有效功能,改错地方、重复实现,代价比删除更高。
下线动作分三步:先从导航、首页、活动页里移除指向它的链接;再确认没有其他已上线页面或接口在调用它;最后把相关代码、配置和数据结构说明归档到一处,注明取消原因和日期。结果是可以安全删除运行部分,而判断依据被保留下来。若日后需求重启,翻档比翻聊天记录可靠。
例外情况是:这个功能虽然没人用,但它的数据表里存着历史业务记录。此时不能连数据一起删,应先导出或迁移,再下线界面和接口。
把“为什么想留”和“为什么想删”拆成可核对的问题,能减少反复。下面这组对照可以直接拿去做判断:
这里的关键是“可达”和“被调用”要分开查。可达指人能找到并操作它;被调用指程序之间还在互相请求。两者混在一起看,容易把死代码当成活功能。
假设某桂林网站开发项目里,原计划的在线报价计算器已经写完,但业务方向调整后不再对外提供报价。现在有两种做法:
如果这个计算器没有任何对外链接、没有客服在用、也没有历史报价数据,第二种更合理。如果客服仍在用它给客户算参考价,那它实际上还在承担业务,应选第一种,但要把“参考价、非最终报价”写清楚,避免误解。
无论留用还是下线,都要在项目里留下一句明确结论:这个功能当前处于什么状态、由谁负责、下次什么条件下重新评估。留用就写清冻结范围和触发修复的条件;下线就写清归档位置和删除范围。没有这句结论,同样的取舍会在下一次排期时被重新讨论一遍,前面的判断等于白做。