结论先行:先判断这个功能是否仍被真实用户路径依赖,再决定留用还是下线。若它已经不在任何核心流程里、维护成本却持续发生,下线通常更合理;若它仍被外部链接、合同约定或内部流程引用,留用并冻结改动更稳妥。下面给出区分条件和具体动作。
需求被取消,只说明发起方不再推进,不等于功能没有价值。评估时要找两类证据:一类是访问与调用记录,另一类是业务侧的确认。若功能页面的访问量长期接近零,同时业务方确认没有正在进行的活动依赖它,这属于可以下线的信号。反之,如果访问量低但集中在少数固定入口,比如某个合作方页面或内部报表,就不能只看总量,要按来源拆分。
这里有一个容易误判的地方:访问量归零可能只是因为入口被移走、链接失效或统计脚本本身出问题。它不能单独证明功能无用。下一步动作是先恢复一次可观测的入口,再观察一段固定周期,而不是直接删除代码。
已经投入的开发成本属于沉没成本,不应作为留用的主要理由。真正要比较的是继续维护的代价和下线的代价。
假设某功能每月维护耗时约两小时,下线后这些时间可以转投核心流程;但下线前需要额外花半天做引用排查和数据归档。这个比较只是说明方法,具体数字应按自身情况估算。若排查发现存在一份对外承诺依赖该功能,那么即便维护耗时更高,也应先留用并冻结功能范围,而不是立即下线。
决定留用时,不要让它继续悄悄变化。把功能标记为冻结状态:不再接受新需求,只做必要的安全修复,并在代码或配置中注明负责人和复核时间。这样做的结果是,后续升级时能快速判断它是否仍需要跟随变更。
决定下线时,先做一次引用排查:检查站内导航、外部链接、定时任务、接口调用和报表引用。确认无依赖后,再按“先隐藏入口、后移除代码”的顺序推进。隐藏入口后观察一段周期,若没有异常反馈,再清理代码和数据。这个顺序让问题暴露在可回退的阶段。
如果这个功能承载的是合规留痕、对账依据或历史数据查询,那么“需求取消”和“访问量低”都不足以支持下线。此时它服务的是低频但不可替代的场景,正确做法是保留数据与最小可用的查询路径,去掉展示层和交互层,而不是整体删除。判断标准是:一旦需要追溯,是否还有其他方式能还原同样的信息。答案是否定的,就应留用。
把评估结论和依据写进同一份记录,下一次遇到类似取消需求时,就能直接对照条件判断,而不必重新争论一遍。