先别急着删代码。把已开发的功能当成一件待处置资产:对照最初需求文档、当前合同与验收清单,判断它是否仍被业务使用、是否有替代入口、是否产生维护成本。只要功能无人访问、无数据写入、无外部依赖,且合同未约定必须交付,就应进入下线流程;反之,若它仍被真实用户触发或支撑其他模块,留用并补做验收更稳妥。
需求取消的时间点决定处置方向。若取消发生在开发完成、尚未验收阶段,功能通常仍属于交付物的一部分,不能仅凭口头取消就删除;若取消发生在验收之后、业务前提已变化,则要重新评估是否继续维护。
判断依据可以来自三份材料:需求变更单、验收记录、上线后的访问日志。假设某旅游线路查询模块在开发完成后,因线路暂停而取消需求,但代码已合并到主分支。此时应查该模块是否还有页面入口、是否被其他页面调用、是否有后台数据写入。若三者都没有,下线风险较低;若仍有入口,则要先确认入口是否已被其他功能替代。
一个可执行动作是:把功能相关页面、接口、数据库表、定时任务列成清单,逐项标注“被谁调用”。清单完成后,若某项无人调用,就进入下一步评估;若有人调用,则暂停删除,转去确认调用方是否也需要调整。
不要凭感觉决定。可以用以下三组证据做区分:
假设一个张家界本地民宿预订站,曾开发“会议室预订”功能,后来会议室改为仓库,需求取消。若后台仍能看到历史预订数据,但前台入口已撤,且无其他模块调用,则可先关闭入口、保留数据表,观察一个周期后再决定是否删除代码。这个动作的结果是:入口关闭后若无人反馈,说明下线可行;若有人反馈需要查询历史记录,则保留只读入口更合适。
留用不等于原样放着。若决定留用,至少要补齐三项:明确责任人、设定复查时间、确认功能与当前业务描述一致。例如,功能仍在用但需求文档已过时,应更新说明,避免后续维护人员误判。
下线也不等于直接删库。建议按顺序执行:先关闭前台入口,再停止后台写入,然后保留数据备份,最后移除代码。每一步之后观察是否有报错或用户反馈。若关闭入口后出现 404 或接口错误,说明还有未发现的调用方,需要回退并补充依赖清单。
一个短例子:假设某功能下线后,监控显示相关接口错误数上升。此时不能直接认定“删错了”,还要检查是否是缓存未刷新、旧链接被外部引用或移动端未同步更新。只有排除这些合理解释后,才能确认删除动作本身有问题。
完成上述判断后,可以按以下顺序落地:
这套动作的关键是让每一步都有可回退的余地。关闭入口后无异常,才进入删除代码;删除代码后无异常,才清理数据表。任何一步出现异常,都回到上一步重新确认依赖关系。这样处理,既不会因为需求取消就草率删除仍有用的功能,也不会让已无业务支撑的代码长期占用维护精力。