结论先给:如果这个功能已经上线、有真实访问或操作记录,且维护成本低于重新开发的预期成本,可以留用但必须补上验收与责任人;如果它没有入口、没人使用、还依赖难以维护的代码或第三方接口,下线通常更省事。判断的关键不是“开发都做了不能浪费”,而是“留用后谁负责、出问题谁处理”。一个反例是:功能当前无人使用,但它承载着合同约定或对外承诺,这时下线会带来履约风险,留用反而更稳妥。
需求取消可能只取消了业务目标,也可能连功能入口、数据字段和后台权限一起取消。两者处理方式完全不同。可以按下面三层核对:
这三层里只要有一层没确认,就不要急着做删除动作。先确认再动手,能避免把“下线功能”变成“丢数据事故”。
直觉常常是“做都做了,留着吧”。但留用的真实代价是长期维护,而不是当初那笔开发费。可以用一组可查的证据来区分:
把这些写成一页简表,比开会争论有效。记录、依赖、耦合、替代四项里,只要“依赖多且无人使用”,下线理由就足够充分。
假设某常德本地企业的网站曾开发过一个“在线预约到店”模块,后来业务改为只接电话预约,需求随之取消。此时可以这样比较:留用方案需要继续维护预约表、短信通知接口和后台处理页面;下线方案需要撤掉前台入口、停止通知任务、导出历史预约数据后归档。若历史数据只有少量且已处理完,下线更省事;若预约数据还要用于后续回访,则应保留数据、下线入口,而不是连数据一起清掉。
这个例子的重点不是数字大小,而是先把“功能”和“数据”拆开。功能可以下线,数据按需要保留,两者不必捆绑处理。
有一种情况会让留用判断反转:功能本身没人用,但它出现在已签署的合同、已发布的对外说明或已交付的验收材料里。这时下线可能被理解为未履约,需要先确认承诺范围,再决定是保留入口、改为说明页,还是走变更确认。反过来,如果功能有人用,但依赖的接口已经无法稳定调用、每次故障都要临时救火,那么“有人用”也不足以支撑留用,应当先安排替代方案再下线。
建议的实际动作是:给这个功能打一个状态标记,写明“保留观察”“仅保留数据”“计划下线”三种之一,并指定一名责任人。标记完成后,观察一个约定周期内的访问与报错情况,再据此决定下一步。这样做的结果是,后续每次维护排期都能看到它的真实状态,不会因为没人认领而反复被翻出来讨论;如果观察期内出现报错或数据异常,也能直接转成下线或修复任务,而不是重新走一轮需求评审。