结论先给:如果这个功能已经开发完成、但原始需求已被取消,是否留用取决于三件事——它是否还有明确的业务责任人、是否产生可核对的维护成本、以及保留它是否会干扰现有流程。三者都成立才倾向留用;只要责任人和成本两项都说不清,下线通常是更稳妥的默认选择。下面给出判断依据和一个会让结论反转的反例。
需求取消往往只取消了目标,没有取消代码。要区分三种情况:业务方明确不要这个结果;业务方只是暂时搁置、以后可能重启;需求被别的方案替代。第一种和第三种倾向下线,第二种才需要保留观察。判断方法很直接:找到当初提出需求的人,问一句“如果这个功能明天消失,会影响你哪个具体动作”。如果对方说不出具体动作,说明它已经没有业务锚点。
这里要避免一个常见误判——把“没人用”直接等同于“该删”。没人用也可能是入口太深、没有引导、或者上线后从未通知目标用户。区分办法是看访问日志里有没有真实请求:如果连一次有效访问都没有,且上线后从未对外提及,那更可能是从未被触达,而不是被验证过不需要。
两类原因会得出完全相反的处置结论,需要分开验证:
还有一种容易被忽略的解释:功能被其他路径覆盖了。比如用户通过客服、线下或另一个页面完成了同样的事,导致这个功能看起来“没人用”。这时要比较两条路径的成本,而不是只看这一条的访问量。请求量归零本身不能单独证明处理正确,它可能只是入口被改动的结果。
已经投入的开发成本是沉没成本,不该成为留用的理由。真正要算的是继续留着会持续产生什么:
前两项可以用“下次相关升级时预计要投入多少人力”来估算,后两项靠团队反馈判断。如果四项里有两项以上说不清,说明这个功能的实际负担被低估了。
假设某功能已开发但需求取消,团队决定保留,理由是“删了可惜,万一以后要用”。这个理由在一种情况下会直接失效:该功能依赖的外部接口或内部数据结构正在变化。此时保留的不是一份静态代码,而是一个需要持续跟随升级的负担。一旦上游变更,要么被迫投入人力适配,要么功能静默失效却仍占着入口和文档位置。所以只要存在“上游正在变、而当前无人负责跟进”的组合,留用的前提就不成立,应转为下线或明确封存。
反过来,如果这个功能是纯前端展示、不依赖外部数据、不涉及权限,且业务方口头认可“以后可能重启”,那么保留的边际成本很低,可以先封存入口而不删除代码。
在证据不足时,不要直接删除。建议的动作是:先隐藏入口、保留代码和数据,同时记录隐藏日期和负责人。这样做的结果是——如果两周内没有任何业务方反馈“找不到”,就可以进入删除评估;如果有人反馈,则说明它仍有隐性依赖,需要重新确认责任人。这个动作把“删还是留”的二选一,变成了一次可观察、可回退的验证,后续决定就有了依据,而不是靠感觉。