先不要按“谁提的需求”决定去留,而要把这个功能当成一份资产来盘点:它现在被谁使用、维护它要付出什么、下线它会牵连哪些页面与数据。拿一张功能清单或一个已上线的功能页面,按下面四步走,通常能在一次评审内得到“保留、冻结或下线”的结论。
需求取消只说明当初的立项理由消失了,并不等于代码、数据表和入口页面自动失效。你要做的是收集三类事实:这个功能当前有没有真实访问与调用、它依赖哪些外部接口或组件、它是否被其他模块引用。把这三类信息写在同一行里,每个功能一行,形成一张可评审的清单。
判断访问情况时注意一个容易误判的现象:某功能的访问量降到接近零,可能是需求取消后的自然结果,也可能是入口被隐藏、埋点失效、或用户改走了另一条路径。请求量归零本身不能证明这个功能该删,它只是提示你需要进一步确认原因。可以对照入口链接是否还在、日志是否仍在采集、相关页面是否仍能被搜索或站内导航到达。
建议对清单里的每个功能依次判断,而不是笼统地投票:
四个维度里,只要“下线牵连”为高,就应先进入冻结而不是删除;只有价值低、维护成本高、牵连低且可替代,才是明确的下线对象。
保留适用于仍有使用证据、或牵连到核心交易链路的功能。保留不等于原样放着,应同时指定负责人和下次复核时间,否则它会重新变成无人认领的遗留代码。
冻结适用于价值不明确但删除风险高的功能。具体动作是:隐藏入口但保留页面与数据,停止对外承诺,记录依赖关系,并明确不再投入新开发。冻结的结果是把它从活跃需求里移出,同时保留可恢复的可能。
下线适用于价值低、可替代、牵连可切断的功能。下线前要列出被引用的位置,逐个处理跳转或提示,并确认相关数据按既定备份策略留存。这里的关键动作是先切断引用、再移除代码,顺序反了就会出现死链或报错。
假设某个商城曾开发过“到店自提预约”功能,后来因业务调整取消了自提需求,但功能页面和预约数据表仍在。评审时可以这样记录:访问证据显示入口已从导航移除,仅剩少量直接访问;维护成本中等,因为它依赖一个门店接口;下线牵连包括订单详情页的一处跳转和后台一张报表;可替代性上,普通配送流程能承接大部分用户目的。
据此的处置可以是:先隐藏入口并保留数据,观察一个复核周期;若期间没有新的使用证据,且门店接口可以停用,则进入下线流程。这个例子的数字与结论都是假设,用于说明比较方法,不代表任何真实项目结果。真正要带走的动作是:每次评审后更新清单状态,并把“下次复核时间”写成具体日期,让它成为下一步的依据,而不是停留在讨论层面。
很多人只评估功能本身,却漏掉“它是否被数据或报表间接引用”。一个页面可以删,但一张被后台报表读取的数据表不能随手删。检查方法是从报表、导出任务和统计口径反向找引用,而不是只看前端入口。这个条件一旦遗漏,下线动作就会在事后才暴露问题。
把上述清单、四个维度、处置条件和复核日期放在同一份文档里,你就能对每个已开发但需求取消的功能给出可执行结论,而不是继续在“留着占地方”和“删了怕出事”之间反复摇摆。