先判断这项功能是否形成对外承诺或数据依赖,再决定留用还是下线:如果它已上线且被外部引用,或产生必须保留的数据,倾向留用并补维护责任;如果从未上线、无外部引用、无独占数据,倾向下线并清理代码。下面给出两种条件下的选择依据、实施动作和例外。
需求取消不等于功能无影响。只要页面曾被搜索引擎抓取、被用户收藏、被其他系统调用,直接删除就可能产生死链或中断调用。此时留用的目的不是继续开发,而是把功能转为低维护状态。
可核对的证据包括:服务器访问日志里该路径是否仍有稳定请求;站点地图或站内链接是否仍指向它;是否有外部系统按固定地址调用。若这几项中至少一项持续存在,删除的代价通常高于保留。
实施动作:把功能标记为“冻结”,停止新增投入,只保留必要的可用性修复;在页面或接口上注明维护状态;把入口从主流程中移出,但保留原地址可达。做完这一步,下一步评估重点从“要不要删”转为“每年维护成本是否可接受”。
如果功能只在开发分支、测试环境或未发布的页面中存在,没有对外暴露,删除的顾虑主要是代码和数据的清理成本,而不是用户影响。
判断依据可以更直接:代码是否被其他模块引用;数据库表或字段是否被其他功能共用;是否有测试用例或脚本依赖它。若全部为否,下线是更清晰的选择。
实施动作:先移除对外的入口和路由,再删除独占的代码与数据表,最后跑一遍回归测试。若删除后发现某处引用报错,说明依赖判断有遗漏,应恢复该部分并重新归类为“留用观察”,而不是继续强删。
留用与下线的分歧,往往来自把“需求取消”当成“功能无用”。可以用下面的清单逐项核对,任何一项为“是”就应偏向留用:
反过来,若以上全为“否”,且功能没有对外承诺,下线通常是成本更低的选择。注意请求量归零并不能单独证明可以删除——日志轮转、访问来源变化、抓取策略调整都可能造成同样的现象,需要结合引用关系一起看。
假设某乌海网站设计项目中,一个在线预约模块已完成开发,但上线前业务方向调整,预约需求被取消。若该模块从未发布,且预约数据表没有被会员模块共用,那么删除路由、表结构和相关代码,并跑一次回归测试即可,后续无需再为它安排维护。若它已经发布过一段时间,即使当前无人预约,也应先保留地址可达并观察日志,再决定是否下线。两种路径的差别不在工作量,而在是否存在外部依赖。
留用应有观察期和退出条件。可以约定:连续一个观察周期内无有效外部请求、无数据新增、无引用报错,则重新评估下线。若期间出现新的调用或数据写入,则说明依赖仍存在,应继续保留并明确维护责任人。这样处理的好处是,把“暂时不删”变成有依据的阶段性决定,而不是把遗留功能永久堆积。