先给结论:不要按“需求是否取消”决定去留,而按这项功能是否仍在产生可验证的维护成本与风险来分流。如果它能独立存在、不拖累主流程、又有少量真实使用,可以留用但降级为“冻结状态”;如果它侵入核心路径、依赖已废弃的数据或接口、每次发版都要跟着改,就应下线。缺少完整数据或后台权限时,最小动作是查清入口、依赖和最近一次真实使用记录,而不是先删代码。
判断“可独立”的标准很具体:它有自己的入口、自己的数据表或存储、不修改主流程的必经步骤。满足这三点时,留用的代价通常只是静态资源和少量查询,不构成持续返工。
此时可执行的动作是把它标记为冻结,并在建站方案说明文档里补一条状态记录:功能名、入口位置、依赖项、冻结日期、责任人。结果会直接影响下一步——冻结后新需求不再默认兼容它,下次改版时可以把它移出主流程,而不是每次都被动维护。
需要留意的例外:如果它调用了外部接口或第三方服务,而该服务的可用性无法确认,那“可独立”就不成立。这种情况下应先确认接口是否仍在响应,再决定冻结还是下线,不能因为页面还能打开就认为它安全。
出现以下任一证据,就应把下线排在留用前面:
下线的实施动作不是直接删文件,而是先断开入口:移除导航、跳转和内部链接,保留一个返回主流程的兜底跳转,观察一段时间。这个动作的结果是,你可以从访问日志或错误日志里确认是否还有真实流量;如果入口断开后没有任何异常请求,才进入删除代码和清理数据的阶段。
假设的例子:某功能只在一个已下线的活动页里被调用,活动页早已不在导航中。断开入口两周后,日志里只有爬虫请求,没有用户路径进入。这可以支持下线判断,但不能单独证明“删掉一定安全”——爬虫请求归零或错误日志为空,也可能只是日志未覆盖该路径,仍需确认日志范围。
没有后台权限、看不到完整统计时,仍然可以推进判断:
这三个动作的产出是一份依赖清单,而不是使用量结论。依赖清单能回答“下线会不会连带影响别处”,但回答不了“还有多少人在用”。因此它只支持下线前的风险评估,不支持直接删除。若后续拿到访问数据,再用数据修正判断。
当功能确实有人在用、但需求方已不再投入时,可以选择降级保留:保留只读展示,关闭写入和提交;或保留入口,但去掉与主流程的耦合。这样做的依据是,读取通常比写入更少牵连数据一致性和权限逻辑。
实施时把写入相关代码注释或移除,保留展示层,并在建站方案说明里注明“只读、不再接收新数据”。结果是维护面缩小,下次评估时只需判断展示层是否还有价值,而不必重新梳理整套逻辑。例外是:如果展示的数据本身来自已停止更新的来源,页面会逐渐失真,此时降级保留反而制造误导,应改为下线。
无论选择留用、降级还是下线,都要把结论和依据写回建站方案说明的变更记录:谁在什么条件下做的决定、依据是哪条证据、下次复核的触发条件是什么。触发条件可以写成“当该功能依赖的接口变更时重新评估”或“当下次主流程改版时一并处理”。
这样做的实际影响是,后续维护者不必重新争论同一个问题,只需检查触发条件是否出现。需要强调的是,任何一次评估都只对当时掌握的证据有效;请求量、抓取量或错误日志的变化,可能来自入口调整、日志范围变化或爬虫行为,不能单独当作处理正确的证明。把依据写清楚,比把结论写死更重要。