先给结论:不要因为需求取消就立刻删除,也不要因为代码已经写完就默认保留。正确做法是把这项功能当成一个待裁决资产,用同一套证据分别评估“继续维护”“冻结保留”“彻底下线”三条路径,再选成本最低且不破坏现有用户任务的那一条。下面以你手上一个已经上线或已合并、但原始需求被取消的功能页面为对象,逐步给出可执行的处理方案。
需求取消只说明立项理由消失,不等于访问行为归零。你需要先拿到三类可区分的数据,而不是只看一个总访问量。
这里有一个常见误判:某页面请求量降到很低,并不自动证明可以下线。它也可能是入口被藏得太深、站内搜索没有收录、或页面加载变慢导致用户放弃。反过来,访问量突然升高也不能直接证明需求恢复,可能只是被外部渠道短暂引流。把“量低”当成“无价值”,是把统计相关当成了因果。
一个功能通常不是铁板一块。评估留用或下线前,先把它拆成四层,分别判断:
实际动作:先只隐藏前台入口,保留页面可直达,观察一个完整业务周期。结果如果直达访问也归零,说明入口是唯一价值来源,可以考虑整页下线;如果直达仍有稳定使用,说明存在未登记的依赖,应转为冻结保留并补记依赖方。
下面是一个假设例子,数字只用于说明比较方法,不代表任何真实项目结论。假设某报名功能的需求已取消,代码已上线三个月。
判断留用是否成立,关键不是“代码已经写了”,而是“继续维护的边际成本是否低于重新开发的可能成本”。如果这项功能与核心流程共用组件,保留它可能几乎不增加成本;如果它单独占用接口、定时任务和权限配置,保留就是持续负担。
彻底下线最容易出错的地方,是直接删除代码而忽略数据与外部调用。建议顺序如下:
每一步的结果都会影响下一步:如果第二步发现仍有外部调用,就停止下线,转为冻结保留;如果第三步归档失败,就不要进入第四步。这个顺序的价值在于,任何一步都能回退,而不是删完才发现无法恢复。
上述方法在单个功能上通常成立,但规模化后会遇到例外。例如,多个已取消功能共用同一个接口,逐个下线看似安全,合并后却发现接口仍被一个未登记的内部工具依赖;又例如,某个功能在单个站点访问归零,但在多站点架构下,其他站点仍通过同一模板渲染。此时不能直接照搬“访问归零即可下线”的结论。
边界条件很明确:只有当功能入口、页面、接口、数据四层都能独立确认无依赖时,单个样本的结论才可复制。否则应先建立功能与依赖的对应清单,再批量处理。对于无法确认依赖的功能,冻结保留比彻底下线更稳妥,代价是需要指定负责人和复查周期。
最后给一个可立即执行的动作:打开你手上的那个功能页面,记录它的入口来源、直达访问和关键动作次数,然后只隐藏入口、保留直达,观察一个完整业务周期。这个动作的结果会直接告诉你,下一步是补负责人、转只读,还是进入分层下线流程。