结论先给:只要这个功能还挂在对外可访问的入口上、还需要人维护、还可能被用户误用,就应优先下线;只有当它已被真实业务方接手、有明确责任人、且不与其他功能产生歧义时,留用才成立。判断依据不是“代码已经写了”这件事本身,而是它现在是否仍在承担一项有人负责的业务。
功能开发完成意味着成本已经发生,这部分无论留用还是下线都收不回来。真正决定去留的是另外三件事:现在有没有人用、有没有人为它出错负责、它是否还占用资源。把这三件事分开看,结论通常比“删了可惜”清楚得多。
评估时不要只问“还要不要”,而要收集能区分原因的证据。以下现象单独出现都不足以定论,需要组合判断。
把这些结果写成一页纸,交给业务方确认。业务方签字的“不用了”,比开发自己判断更可靠。
假设某站点为一次活动开发了在线报名功能,活动后来取消。若报名数据里已有几十条真实提交,且这些数据被用于后续回访,那么正确动作是关闭报名入口、保留数据表和后台查询,而不是删除整个模块。反过来,如果该功能从未对外开放、也没有产生任何提交记录,那么直接下线并移除相关路由和权限,风险要小得多。两个例子的差别不在代码量,而在“是否已有外部数据依赖”。
如果这个功能虽然当前无人使用,但已经被写进合同、备案材料或对外承诺中,或者客户明确表示未来某个时间点会启用,那么立即下线就可能造成违约或返工。这种情况下应改为“冻结”:保留代码、关闭对外入口、在文档里标注恢复条件和责任人,并约定一个复查时间点。冻结不等于放任,它同样需要有人定期确认条件是否变化。
先做一次依赖扫描:在代码库中搜索该功能的入口链接、接口调用和数据库表名,列出所有引用点。扫描结果决定了动作顺序——有引用就先解耦,无引用才可以直接下线。完成解耦后,关闭对外入口并观察一段时间,确认没有报错和业务反馈,再决定是否删除代码。这个顺序让每一步都可回退,也避免把“暂时不用”误判成“永久废弃”。