先给结论:不要因为“需求取消”就直接删,也不要因为“已经开发”就默认留。判断标准应回到三个成本——继续维护成本、留着带来的风险成本、以及未来重新开发成本。三者相加最低的那个选项,才是当前该选的。下面用一个假设情境串起决策过程。
假设某六安本地服务类网站,原计划上线一个“活动在线报名”模块,开发已完成并部署在测试环境,尚未正式对外。后来活动取消,需求作废。此时团队面临的问题不是“要不要删代码”,而是这个模块该留、该下线、还是该彻底移除。以下判断方法同样适用于旧内容页、旧系统和旧合作关系,只是把“模块”换成对应对象。
已开发不等于已产生价值。先确认三件事:
动作建议:把该功能涉及的页面、接口、数据表、定时任务列成一张依赖清单。清单出来后,你才能判断下线是“关一个入口”还是“动一整块结构”,这一步的结果直接决定后面选轻量下线还是彻底移除。
把留用、下线、移除当作三个独立方案,分别估成本:
如果未来重启该需求的可能性很高,且代码与现有架构耦合不深,留用的长期成本可能低于“删了再写一遍”。反之,如果需求方向已经改变,保留的代码大概率过时,那留着只是心理安慰。
假设(以下数字仅用于说明比较方法,非真实项目数据):留用每年维护约需 3 人天;下线保留需 0.5 人天且几乎无后续;移除需一次性 2 人天。若未来一年内重启概率低于约三成,移除的期望成本更低;若重启概率很高,留用更划算。关键不是精确算出概率,而是让团队对“重启可能性”给出一个明确判断,而不是含糊地说“以后也许用得上”。
这个比较做完后,下一步动作就明确了:倾向移除的,先做依赖清理和 301 或 410 处理;倾向留用的,必须给它指定维护责任人和复查时间,否则“暂时留着”会变成永久遗留。
如果决定下线,按顺序做:关闭入口、屏蔽或重定向原地址、保留必要日志一段时间、观察服务器错误日志和抓取反馈。这里要提醒:抓取量或某项统计归零,并不能单独证明处理正确——它也可能是入口本来就没流量、统计代码失效或抓取延迟。要交叉验证,比如直接访问原地址看返回状态码、检查站内链接是否还有指向。
如果决定保留,至少做到:入口明确隐藏或标注“未开放”、数据访问权限收紧、在项目文档里记录该功能的状态和复查日期。这样下一次改版时,接手的人不会误以为它是活跃功能。
无论选哪条路,都建议留下一段简短记录:为什么取消、为什么留或删、谁负责、何时复查。六安网站设计项目里,很多遗留问题不是因为当初选错,而是因为没人记得当初为什么这么选。记录本身就是降低下次决策成本的动作。
回到最初的问题:需求取消后,功能该留还是该下线,答案取决于维护成本、风险成本和重启概率的比较,而不是取决于“已经开发了”这个既成事实。先列依赖清单,再算三笔账,最后指定责任人和复查时间,这个顺序能帮你把决定做扎实。