结论先给:如果这项功能已开发完毕、但与当前业务目标不再相关,且无人愿意承担后续维护责任,那么默认动作应是下线,而不是“先留着再说”。反过来,如果它能被现有流程直接复用、有明确的使用方,或者下线本身会牵动其他已上线功能,那么留用并纳入维护清单更划算。判断的关键不是沉没成本,而是这项功能未来会不会持续产生成本,以及有没有人真的在用它。
需求取消往往发生在开发完成前后,此时最容易出现的误判是:因为没人再提这个需求,就默认它没价值。但“没人提”可能只是需求方换了优先级,并不等于功能上线后没人访问。要区分这两种解释,需要看可核对的证据,而不是凭印象。
如果三类证据都指向“无访问、无依赖、无使用方”,下线是合理默认。但只要其中一类显示有真实调用,就不能仅凭需求取消就删。
下面这张判断路径不依赖主观感受,而是把结论建立在能查证的事实上。假设某长沙网站开发项目上线了一个活动报名页,活动后来取消,但页面已经开发完成。
假设结果是:访问量为零、无外部引用、但依赖一个每月更新的数据接口。此时留用的真实代价不是“占一点空间”,而是每月都要有人确认接口是否正常。这种情况下,下线的收益大于保留。
有一种情况会让上面的结论失效:功能虽然当前无人使用,但它与即将上线的新需求高度重合,删掉后很快又要重建。这时下线不是节省成本,而是制造重复开发。
判断是否属于这种反例,要看是否有已确认的后续计划,而不是“可能会用”。如果只是模糊觉得以后也许用得上,仍应按下线处理;如果已有明确排期和负责人,并且功能复用度较高,可以暂时保留,但必须同时指定维护责任人,否则它会变成无人认领的遗留代码。
无论最终留用还是下线,都建议先做一步隔离,而不是直接删除。具体做法是:把该功能的入口从导航和主要流程中移除,保留代码和数据一段时间,同时记录它是否仍有访问或调用。
这一步的结果会直接影响下一步:如果隔离期内访问量归零,说明没有隐藏依赖,可以安排正式下线;如果隔离期内仍出现调用,说明存在未识别的使用方,需要先找到调用来源再决定。隔离期的长度应覆盖至少一个完整业务周期,避免因周期性使用而误判。
需要说明的是,访问量归零本身不能单独证明功能无价值。它也可能是因为入口被隐藏、统计未覆盖,或使用方暂时没有触发。把隔离观察与业务侧确认结合,才能让留用或下线的决定站得住脚。