先给结论:不要因为“需求已取消”就立刻删除,也不要因为“代码已经写完”就默认保留。评估的核心是这项功能是否仍在产生可验证的价值,以及维持它所需的隐性成本是否已经超过收益。缺少完整数据或权限时,仍可执行一个最小动作:列出该功能的入口、依赖和最近一次被真实使用的证据,再据此判断留用、改写还是下线。
需求取消只说明发起方的目标变了,不等于功能没有被其他人用到。缺少埋点或后台权限时,可以退而求其次,检查三类间接证据:服务器访问日志中该功能相关路径的请求量、数据库里由该功能写入的记录时间分布、以及客服或内部群里是否有人提到过它。
这些证据都有局限。请求量归零可能是入口被隐藏、跳转失效或爬虫策略变化,不能单独证明功能无用;反过来,有请求也不代表是真实用户在正常使用,可能只是监控探针或旧缓存。因此这一步的结论只能是“有使用迹象”或“无明显使用迹象”,不足以直接决定去留。
三种处理方式成立的条件不同,先分清前提再动手。
如果拿不到日志或数据库,可以从代码和配置层面入手。搜索该功能对应的路由、模板和接口定义,记录它被哪些地方引用。一个可执行的动作是:在测试环境临时关闭该功能的入口,观察是否有报错、监控告警或内部反馈。这一步的结果会直接影响下一步——若没有任何异常,说明它相对独立,可以进入下线评估;若出现连锁报错,说明存在隐藏依赖,应先梳理调用关系再决定。
这个动作只能说明“移除入口后系统是否稳定”,不能说明“用户是否还需要它”。两者是不同的问题,不要用前者的结论替代后者。
假设某功能是为一次已取消的促销活动开发的报名表单,活动取消后表单入口仍挂在页面上。可比较两个方案:方案A保留但隐藏入口,成本是每次改版都要检查它是否被误删;方案B彻底移除,成本是确认没有其他页面链接到它、没有定时任务读取它的数据。若检查发现只有一个内部报表引用了它的数据表,那么更合理的做法是先改写报表的数据来源,再移除表单,而不是直接删表。
这里的数字和场景均为假设,用于说明比较思路,不代表任何真实项目结果。
无论选择哪种处理方式,都应记录判断依据:检查了哪些入口、看到了什么现象、排除了哪些替代解释。这样当后续有人问起“这个功能为什么没了”或“为什么还留着”时,不必重新走一遍排查。记录本身不产生排名或收益,但它能减少重复决策带来的开发时长消耗。
最后提醒一点:需求取消是业务信号,不是技术结论。把两者分开评估,才不会让已经投入的开发工时绑架后续判断。