先给结论:不要因为“已经花了开发工时”就默认留用,也不要因为“需求方说不要了”就立刻下线。评估的核心是看这个功能是否还有明确的维护责任人、是否产生真实使用、是否与当前业务规则冲突,以及下线需要付出多少迁移或沟通成本。只有这四项都有依据时,留用或下线才不是拍脑袋。
需求取消通常有三种不同含义,对应完全不同的处理方式。
判断属于哪一种,不能只问提需求的人。至少要看功能上线后的访问日志、表单提交记录或后台操作记录,确认它是否还在被真实调用。如果没有任何使用痕迹,还要排除“入口太深所以没人找到”“权限没配好所以打不开”这两种合理解释,不能直接判定功能无用。
留用一个已开发但需求取消的功能,成立条件通常有三个:
如果这三个条件只满足“代码已经写了”,那留用只是把成本往后推。一个实际动作是:在后台把该功能的访问来源和调用次数按周统计,连续观察一个完整业务周期。如果统计结果接近于零,下一步不是马上删除,而是先确认是否存在权限限制或入口隐藏导致的假性零使用。这个确认动作会直接决定你是进入下线流程,还是先修复入口再观察。
很多情况下,功能逻辑本身有价值,只是当初包装它的需求场景已经不存在。这时可以把功能改写成后台工具、内部查询页或数据导出能力,而不是继续挂在前台。
改写的适用前提是:核心数据处理逻辑可以复用,且改写后仍有明确的内部使用者。如果核心逻辑与旧业务规则深度绑定,比如依赖已废弃的审批层级或旧版价格体系,那改写成本可能接近重做,此时应优先考虑退出。
一个假设例子:某功能原本用于前台展示某类定制报价,需求取消后前台入口已无意义,但后台仍需要按历史参数重新计算旧订单。此时把前台展示改为后台只读查询,比直接删除更合适。这里的关键假设是“历史订单仍需重算”,如果这个假设不成立,改写就没有必要。
决定下线前,至少要确认三件事:
如果依赖关系不清楚就删除,常见后果是某个旧页面报错、某个报表缺数,或者客服在回答历史问题时找不到依据。这些现象一旦出现,会迫使你回滚,反而增加工作量。因此下线动作应该分两步:先关闭入口但保留代码和数据,观察一个业务周期;确认无异常后再清理代码。这个顺序能让你在出现问题时快速恢复,也避免把“暂时没人用”误判为“永远不需要”。
个别样本中,某个功能没人用可能是因为入口隐蔽或推广不足;但当站点功能数量增多、角色权限变复杂后,同样的“零使用”可能来自完全不同的原因,比如权限配置错误、多站点数据隔离、或者统计口径没有覆盖某个终端。此时直接照搬“零使用就下线”的规则,会误删仍有少数关键用户依赖的功能。
更稳妥的做法是给功能分类:面向外部用户且无访问记录的,优先下线;面向内部流程且涉及数据留存的,优先改写或归档;涉及对外承诺或历史凭证的,即使需求取消也应保留只读能力。分类之后,再对每一类设定不同的观察周期和确认动作,而不是用同一条标准处理所有情况。
最终决策可以落成一句话:留用要有责任人和隔离边界,改写要有可复用逻辑和明确使用者,下线要有依赖确认和替代验证。三者都不满足时,先隐藏入口并保留数据,通常比强行二选一更安全。