先给结论:不要因为“需求已取消”就立刻下线,也不要因为“已经开发完”就默认留用。评估的核心是看这段功能是否仍在承担真实访问路径、是否产生维护成本、是否与当前业务目标冲突。下面用一个假设情境把决策过程写清。
假设某网站曾计划上线“按预算区间筛选服务”的功能,开发已完成并部署到测试环境,但业务侧后来取消了这项需求,因为服务定价改为统一咨询后报价。此时功能代码还在,数据库字段也已建好,页面入口没有正式对外发布。团队面对的问题不是“要不要继续开发”,而是“已经写好的这部分怎么处理”。
这个情境里,功能没有正式上线,但已经消耗了开发成本,也可能影响后续维护。评估时不能只看沉没成本,而要看它未来是否还会被使用、是否拖慢其他工作。
如果功能已经对用户可见,哪怕需求取消,也要先看访问数据。可以检查服务器日志、页面访问记录或前端事件统计,确认是否有真实用户进入该功能。若访问量很低,也不能直接判定可以删除,因为低访问可能来自入口隐藏、页面未推广、跳转错误或统计缺失。此时合理的下一步是修复入口或补充监测,再观察一个完整周期。
如果功能从未对用户开放,只在测试环境存在,那么访问数据不能作为留用依据。此时应转向代码依赖和发布流程检查:该功能是否被其他页面引用、是否与当前模板耦合、是否影响构建速度。假设检查后发现没有其他模块依赖它,那么下线成本较低;若多个页面共用同一组件,则不能直接删除,需要先拆分或替换。
留用不是零成本。已开发功能即使不维护,也会占用代码阅读时间、测试范围和部署检查项。下线也不是零成本,可能涉及数据迁移、页面重定向、接口兼容和合作方通知。可以用下面三个维度做取舍:
一个实际动作是:把功能标记为“冻结”,停止新入口和新数据写入,但保留代码和只读数据一个观察周期。若周期内没有真实访问、没有业务方重新提出需求、也没有外部依赖报错,再进入下线流程。这个动作的结果会直接影响下一步:冻结后仍出现访问,说明入口或外部引用未清理干净;冻结后无访问,则下线风险较低。
留用适用于功能仍在真实访问路径上,且维护成本可控。例如筛选功能虽然需求取消,但已有用户收藏了带筛选参数的链接,直接删除会造成大量死链。此时可以保留功能但停止推广,并把它纳入常规回归测试。
隔离适用于功能不再服务当前目标,但删除风险较高。做法是移除页面入口、关闭新数据写入、保留历史数据和代码分支,并记录恢复条件。隔离不是永久状态,需要设定复查时间,否则会变成隐性技术债。
下线适用于功能没有真实访问、没有外部依赖、也没有明确恢复计划。下线前要确认旧链接有替代页面或返回合适状态码,相关数据按约定归档或删除,并通知可能受影响的合作方。若无法确认外部依赖,先做隔离比直接删除更稳妥。
假设你正面对类似情况,可以按顺序执行:
这套顺序的重点是:先确认事实,再决定去留。需求取消只说明原计划变了,不自动等于功能该删;功能已开发只说明成本已发生,也不自动等于该留。把访问路径、维护成本和退出成本放在一起看,才能做出可复查的决定。