先给一个有条件的结论:如果这个功能已经开发完成、并且不会带来持续的数据维护、权限暴露或兼容负担,那么暂时保留并隐藏入口,通常比立即删除更省事;但如果它需要持续录入数据、调用外部接口、或者与当前业务规则相冲突,那么即使代码已经写完,也应尽快下线。判断的关键不是沉没成本,而是这个功能在无人使用之后,还会不会继续消耗资源或制造风险。
需求取消时,很多人把“功能已开发”理解成代码已经写完。实际上要拆成三层看:界面和入口是否已经上线、后台逻辑是否仍在运行、数据是否还在持续产生。假设一个原本为线下活动准备的报名功能,活动取消后页面还挂着,但后台每天仍在接收提交,这就不是“留着不用”的问题,而是仍在收集无人处理的信息。相反,如果只是模板和样式已经做好,没有入口、没有数据写入,保留的代价就低得多。
你可以先做一次最小核查:在代码仓库和数据库中搜索该功能对应的路由、数据表和定时任务,记录哪些部分仍在被调用。这个动作的结果会直接影响下一步——如果发现定时任务或外部回调仍在运行,优先处理它们,而不是先争论页面要不要删。
留用成立通常需要同时满足几个条件:功能不依赖外部接口的持续授权;不产生需要人工审核或清理的数据;不与当前业务规则矛盾;未来半年内有可能重新启用。满足这些条件时,把入口从导航和站点地图中移除、保留代码但停止对外暴露,是一种成本较低的处理方式。
代价也要说清楚。保留意味着后续每次改版、升级框架或调整权限模型时,都要把这个功能纳入测试范围。假设站点准备更换内容管理系统的某个组件,旧功能可能因为接口变化而报错,排查时间会落在维护者身上。留用不是零成本,只是把成本从“现在删除”推迟到“以后兼容”。
当功能涉及用户提交的数据、支付流程、账号权限或对外承诺时,下线通常更稳妥。这里的下线不只是删除页面,还包括停止数据写入、处理已收集的数据、移除相关链接和跳转。若功能已经对外宣传过,还需要考虑已访问用户看到旧链接时的反馈。
下线的主要代价是可能误删以后还会用到的逻辑。为降低这种代价,可以在删除前导出数据库结构和关键配置,保留一份不含真实用户信息的说明文档,记录这个功能原本解决什么问题、依赖哪些接口。这样即使以后重启类似需求,也不必从零开始。
前面说“无持续负担就倾向留用”,但有一种情况会让这个结论失效:功能本身没有数据写入,却因为页面被搜索引擎或外部平台收录,持续带来与当前业务无关的访问。此时留用的代价不是服务器资源,而是访问者对站点定位的误解,以及客服或运营需要反复解释。遇到这种情况,即使代码干净,也应把页面设置为不可访问,并检查是否还有其他入口指向它。
这个反例说明,判断依据不能只看代码是否运行,还要看它是否仍在对外产生可见影响。
完成这三步后,你会得到一份明确的处理边界:哪些部分已经停止,哪些部分只是暂时隐藏。下一次有人问起这个功能,可以直接按记录判断,而不必重新讨论一遍。