先给结论:不要因为“已经开发完”就默认留用,也不要因为“需求取消”就立刻删除。判断依据应该落在三件事上——这个功能是否仍在承载真实访问或业务动作、保留它每年要付出多少可核对的维护成本、以及下线它会不会影响现有用户和已产生的数据。三项都偏向“无影响”时,下线更合理;只要有一项指向“仍在使用或数据不可丢”,就先降级保留,而不是直接砍掉。
假设你在淮北建网站时,为一个已取消的招商报名活动开发了在线提交表单,含后台列表、导出和邮件通知。活动取消后,页面入口被撤下,但表单地址、后台菜单和数据库表都还在。此时常见的两种误判是:看到后台没有新记录就认为可以删;或者觉得代码已经写完,删了可惜,于是长期挂着。两种判断都跳过了证据。
更稳妥的做法是先取三组数据,再决定动作。第一组是访问与提交:查这个表单地址在最近一段时间的请求量、提交量和报错量。第二组是依赖:查是否有其他页面、邮件模板、统计代码或人工流程还在引用它。第三组是数据:查已提交内容是否已导出归档、是否有对外承诺的保留期限。这三组数据不需要复杂工具,站点日志、后台记录和一份人工清单就能覆盖。
请求量归零,并不能单独证明这个功能该删。它至少还有几种合理解释:入口被撤下后用户根本找不到;表单地址只在旧宣传物料里出现过;或者页面能打开但提交一直报错,用户试过一次就放弃了。这几种情况的处理方式完全不同——前两种是“确实没有需求”,后一种其实是“功能坏了但需求可能还在”。
区分方法是做一次小范围验证:把入口临时放回一个不对外推广的页面,观察一段时间内是否有真实提交,同时检查提交链路是否报错。如果验证期内既没有有效提交、也没有报错,才更接近“无需求”的判断。这一步的动作会直接决定下一步:验证通过就进入成本核算,验证失败则先修问题、暂缓下线。
留用不是零成本。一个已取消需求的功能,只要还在线上,就会持续占用以下资源,建议逐项打勾确认:
如果这份清单里有三项以上需要持续投入,而验证阶段又没有发现真实使用,那么留用的理由通常只剩“舍不得删”,这不构成保留依据。反过来,如果这个功能只是入口隐藏、后台仍被某个内部流程每周使用,那它就不是废弃功能,而应该改成内部工具并补上说明,避免被误删。
决定下线后,顺序比动作本身更重要。建议按“先观察、再断流、后清理”推进:
这个顺序的价值在于可回退。直接删代码和删表,一旦发现还有依赖,恢复成本远高于隐藏入口。先隐藏再观察,等于用最低成本换一次确认机会。
出现以下任一情况,建议不要下线,而是降级保留或改造:历史提交数据涉及对外承诺、合同或需要长期备查;功能虽无外部用户,但内部每周仍在用它记录信息;下线会牵动其他页面、接口或统计口径,改动范围超出这个功能本身。此时更合适的动作是把它从“面向访客的功能”改成“内部可用的工具”,补上用途说明和负责人,让它不再以模糊状态存在。
判断标准可以压缩成一句话:还在产生业务动作或承载不可丢的数据,就留;只是代码还在、没人用、也没人负责,就下线。需求取消只是起点,真正决定去留的是使用证据、维护成本和数据价值这三项,而不是开发是否已经完成。