先给结论:不要因为“已经开发完”就默认留用,也不要因为“需求已取消”就立刻删除。评估的核心是判断这段功能是否仍在承担可验证的职责。如果它仍在生成可被抓取的页面、仍在承接已有入口流量,或仍被其他模块调用,就倾向保留并补上维护责任人;如果它只服务于已取消的业务目标、没有独立入口、没有数据依赖,且下线后不会破坏现有页面关系,就倾向安排下线。两种选择都成立,差别在于是否满足对应的前提条件。
需求取消只说明当初的业务目标不做了,不代表代码和数据结构已经与系统脱钩。判断是否被引用,可以查三类痕迹:模板里是否还有对这段功能的调用、数据库里是否还有它生成或依赖的字段、站点地图或内部链接中是否还指向它产出的地址。
只要其中任何一类仍然存在,直接下线就可能连带产生空页面、断链或模板报错。此时更稳妥的动作是:先保留功能,冻结新入口,把它的职责标注为“仅维持存量”,再决定是补维护还是逐步迁移。这个动作的结果是,你不会在清理旧需求的同时制造新的可访问性问题,下一步才有条件从容处理引用关系。
需要注意一个边界:个别页面仍在使用,不等于整个功能都值得留。如果功能产出的地址只有少数几个还有外部入口,可以先把这几个地址改为静态或独立页面,再评估主体功能是否下线。样本少时成立的判断,放到全站规模后可能完全相反。
如果这段功能当初只是为了支撑那个被取消的需求,页面上没有面向用户的入口,站内链接和站点地图里也找不到它产出的地址,其他模块同样不依赖它的数据,那么它的存在价值就只剩“已经写完了”。
此时建议按下面的顺序处理,而不是直接删代码:
这个动作的结果是,功能从“活跃模块”变成“可恢复的归档”,既减少了维护面,也没有把恢复路径堵死。下一步再决定归档保留多久,取决于团队对回滚成本的容忍度。
留用与下线的分歧,往往来自对同一现象的不同解释。可以按下面的对应关系收集证据:
这些证据的作用是帮你区分“功能有价值”和“功能留下的痕迹还没清理干净”。两者对应完全不同的动作。
假设某建站系统曾为一次活动开发了独立的标签聚合页,活动取消后需求也随之取消。若检查发现站内导航已无入口、站点地图不再包含这些地址、其他模板也不调用该模块,那么可以先移除入口并观察,再安排下线。若发现文章详情页仍在自动链接到这些聚合页,则应先保留功能,改为停止生成新地址,再逐个处理存量链接。两种路径的差别不在代码量,而在引用关系是否已经断开。
规模化的例外也要写清:在少量样本上,手动核对引用关系是可行的;当页面量级上升后,人工核对容易遗漏,此时更适合先用站点抓取或链接检查确认范围,再决定是整体下线还是分批迁移。不能把个别样本的结论直接放大到全站。
无论选择留用还是下线,都应留下明确的后续动作:留用时指定维护责任人、冻结新入口、记录依赖关系;下线时先断入口、再观察、最后归档,并保留恢复说明。判断标准不是“开发成本已经花了”,而是这段功能今天是否仍在承担可验证的职责。把这一点写清楚,留用与下线就不再是拍脑袋决定,而是有依据、可回退的安排。