先给结论:不要因为“需求方说不要了”就立刻删代码,也不要因为“已经开发完”就默认保留。正确做法是把它当成一笔沉没成本之外的持续支出,按维护负担、安全暴露面、数据依赖、复用可能四项分别打分,再决定下线、隐藏入口保留、还是转入内部工具。下面用一个标注为假设的情境把决策过程走一遍。
假设某益阳本地建材企业做网站改版,开发阶段加了一个“在线报价计算器”:用户选择规格、数量后自动估算区间价。功能做完、也部署到了测试环境,但业务方临时决定不走线上报价,改回电话沟通。此时代码已经写完,数据库也建了表,前端入口还没挂到正式导航上。
这个情境的关键是:功能已开发,但从未真正面向用户开放。它既不是“已上线要下线”,也不是“没开发要砍掉”,而是一个中间状态。评估时要先确认它当前处于哪一步,再判断下一步动作。
先查三件事,而不是先争论要不要留:
假设检查后发现:只有测试数据,正式导航没有入口,但有一个后台管理页面引用了它的数据表。那么结论不是“可以直接删”,而是“先解除后台引用,再评估删除”。这个动作会直接影响下一步:如果后台引用无法解除,说明它已经嵌入内部流程,应优先考虑保留为内部工具,而不是硬删。
很多人把留用理解成“什么都不做”,其实留用至少包含三种持续支出:
这三项里,安全暴露面最容易在“需求取消”后被忽略。一个实际动作是:即使决定暂时保留,也先把对外接口关闭或加访问限制,只保留内部调用。这样做之后,如果业务方几周内都没有提出需要,说明它确实没有外部价值,可以进入下线流程;如果突然有人要,再恢复入口的成本也可控。
假设只有一位销售在测试时用过报价计算器,觉得“挺方便”。这个个别反馈不能直接推出“全公司都需要”。要问的是:当十个销售、上百个客户同时使用时,会出现什么例外?
换句话说,个别样本成立的条件是“规则稳定、使用人少、结果只作参考”;一旦规则频繁调整或结果被当作正式承诺,就不能照搬。这个边界决定了留用的理由是否充分。
把上面的检查合成一条路径,便于直接照做:
这条路径的核心不是“留还是删”的二选一,而是先用低成本动作(关闭接口、解除引用)制造一个可观察的状态,再根据观察结果决定下一步。它避免了两类常见错误:一是因为沉没成本而长期保留无用代码,二是因为需求取消而误删仍被内部依赖的数据。
如果同时满足以下条件,可以直接进入下线流程,不必再观察:功能从未对正式用户开放、没有真实业务数据、没有被其他正式页面或接口引用、且业务方明确表示不再需要。此时保留只会增加维护和安全负担。
反之,只要有一条不满足——尤其是存在真实数据或内部引用——就应先处理依赖,再决定是否下线。需求取消只说明“不再面向外部用户”,不等于“这段代码对内部也没有价值”。把这两件事分开,评估才不会走偏。