先别急着删代码,也别因为“已经做完了”就默认保留。把这项功能当成一个独立的小产品来评估:它现在还有没有人用、维护它要花多少持续成本、下线会不会影响主流程。如果三项都指向“没人用且成本不低”,下线通常比留用更划算;反之,只要还有真实业务动作依赖它,就应转为“冻结新增、保留运行”的中间状态。
需求取消意味着当初要解决的问题不再被承认,但已经开发的功能可能仍在页面上、仍被接口调用、仍写数据。你需要拿到的不是需求文档,而是三份可核对的材料:
把这三份材料放在一起看,会出现四种组合。入口已隐藏但接口仍被调用,说明有外部系统在依赖;入口可见但访问极少,说明用户已经绕过它;入口和调用都为零,才接近“可安全下线”的候选。注意,访问量归零也可能只是统计口径变了、埋点被移除或页面被搜索引擎降权,不能单独作为下线依据。
已经投入的开发成本是沉没成本,不该影响决策。真正要比较的是两个方向上的未来成本:
一个可操作的判断方法是给这项功能设一个“观察窗口”,例如假设未来一个季度内它仍无人使用。如果留用成本高于重新实现一个替代动作的成本,下线更合理;如果下线后还要为少数用户手工补做同样的事,留用反而更省。这里的假设必须写清楚,不能把假设当成已经发生的事实。
“下线”不等于立刻删代码。按影响面从小到大,可以分成三种处理:
多数情况下,先做入口下线并观察一个周期,比直接跳到第三步更稳。如果入口下线后调用量仍然不变,说明依赖来自站外或后台任务,需要先找到调用方再决定。
你可以直接以这项功能为对象,写一份简短的处理单,包含以下字段:功能名称、当前入口状态、最近调用情况、依赖方、选择的处理方式、执行动作、复查时间。执行动作要具体到“从哪个页面移除哪个链接”或“在接口层返回什么状态”,而不是“评估后处理”。
假设某企业站有一个已取消的在线预约模块,入口还挂在首页,但近三个月没有新预约记录。处理单可以写成:先移除首页入口,保留后台历史记录查询,一个月后复查接口调用。如果复查时调用仍为零,再进入代码清理;如果出现调用,则转为冻结状态并联系调用方。这个例子的数字只用于说明比较方法,不代表任何真实站点的实际数据。
执行后下一步做什么,取决于复查时出现的是哪类变化。调用量下降不一定说明处理正确,也可能是入口移除导致用户找不到,而需求本身仍有价值;调用量不变也不一定说明不能下线,可能是缓存或定时任务在维持。把“入口状态、调用来源、业务方反馈”三项放在一起判断,才能决定是继续清理、恢复入口,还是转为冻结保留。
最终原则很简单:需求取消只说明目标变了,不说明功能必须消失。用实际依赖和维护成本做依据,先降入口、再冻功能、最后清代码,每一步都留下可复查的记录,这项已开发的功能就不会变成长期负担。