先看这个功能是否还在承载真实访问、数据写入或对外承诺;如果仍有独立入口、仍被搜索或推荐带来访问、仍有关键用户依赖,就留用并补齐维护归属;如果入口已撤、访问只剩零星爬虫或内部测试、且没有外部承诺,就下线并保留可恢复的代码与数据快照。判断依据不是“开发已经花了成本”,而是继续保留会消耗多少可预期的维护与安全成本。
条件一:功能仍有独立入口,或者虽然入口隐藏但被外部链接、搜索结果、平台推荐或用户书签直接访问。此时留用更合理,因为下线会制造死链、中断已有访问路径,还可能让已经提交的数据无法取出。动作上,先确认这个入口由谁维护、依赖哪些接口和账号,再决定是继续维护、降级为只读,还是迁移到新流程里。
条件二:入口已经撤掉,访问主要来自内部测试、监控探针或零星爬虫,且没有任何对外承诺。此时下线更合理。动作上,先关闭写入和新数据产生,再保留一段时间的只读访问,最后移除入口和后台菜单。这样做的结果是:如果后续发现还有遗漏依赖,可以在只读阶段恢复;如果只读阶段没有真实使用,再彻底清理,下一步的维护清单会明显变短。
不要先问“开发都做完了,删掉是不是浪费”,而要先收集三类证据:访问来源、数据去向、外部承诺。访问来源区分真实用户、内部账号和自动化请求;数据去向看这个功能是否在写数据库、发消息、生成文件或影响其他系统;外部承诺包括合同、公开说明、帮助文档、客服话术和已经发给用户的链接。
访问量、抓取量或某个统计归零,不能单独证明可以安全删除。它也可能是统计代码失效、入口被临时隐藏、抓取策略变化或访问被合并到别的路径。需要至少再核对一项:服务器日志里是否还有真实请求,或者数据库里是否还有近期写入。
假设某网站设计流程中曾开发一个“旧版报价申请”功能,后来需求取消,新流程改由在线客服承接。现在要决定留用还是下线。假设日志显示近三个月没有真实用户提交,但帮助中心仍有一篇文章链接到该页面,数据库里还有两年前的申请记录。
此时不应直接删除。合理动作是:先把帮助中心那篇文章改到在线客服入口,再把旧页面改为只读说明页,保留申请记录导出能力,最后观察一个维护周期。如果这个周期内没有新的真实访问,也没有客服需要回查旧记录,就可以下线页面和后台菜单,只保留归档数据。这个动作的结果是:外部链接不会立即断掉,旧数据仍可取回,下一步清理范围也更明确。
有些功能虽然需求取消,却承担了安全、审计或法律留存职责。例如登录日志、订单凭证、权限变更记录。这类功能不能按普通页面下线,需要先确认留存期限和读取方式,再决定是归档、迁移还是继续只读运行。另一种例外是旧合作关系:如果对方仍在按旧接口调用,单方面下线会中断合作,应先通知并约定切换时间。
还有一类情况是功能本身已无价值,但代码被其他模块复用。此时不要直接删除公共函数或组件,而是先标记废弃、停止新调用,等依赖清理完再移除。这样做的结果是:短期维护成本不会立刻下降,但可以避免连锁故障,下一步的删除动作也更安全。
评估结束后,至少留下三样东西:留用或下线的结论、依据的证据、下一次复核的条件。例如“因仍有外部链接,暂留只读;若一个维护周期内无真实访问且帮助文档已改,则下线”。这样后来接手的人不必重新猜测为什么还留着这段代码,也不会因为一次统计归零就误删仍在使用的功能。