结论先行:如果这个功能已经开发完成,先不要因为“需求已取消”就直接删除,也不要因为“已经花了工时”就默认保留。判断依据应当是它是否仍在产生可验证的价值、是否带来持续维护成本、以及下线会不会破坏现有用户的正常使用。只有同时满足“无人使用、无外部依赖、维护成本高于保留价值”这三条,下线才是干净利落的选择;否则更稳妥的做法是先隐藏入口、保留代码,观察一个完整业务周期后再决定。
需求取消通常有三种不同含义,对应完全不同的处理方式。第一种是业务方向调整,功能本身没问题,只是暂时不做推广;第二种是提出需求的人离职或换岗,没人再推动;第三种是功能上线后发现逻辑有缺陷,被主动叫停。前两种情况下,功能可能仍有零散用户在用,第三种情况下则要优先评估是否已经产生错误数据。
一个可操作的区分动作是:查这个功能对应的数据表或日志,看最近一个完整业务周期内是否还有真实访问或写入。假设某茂名本地企业的站点做了一个“经销商报名”表单,需求方后来取消了推广计划,但表单本身仍挂在页面底部。这时如果日志显示每周仍有两三条提交,说明它还在被动发挥作用,直接下线会丢失线索;如果连续一个季度零提交、零访问,才更接近“可以下线”的状态。
需要提醒的是,访问量归零不能单独证明功能无用。它也可能是入口被折叠、页面改版后链接失效、或者统计代码本身没覆盖到。把这些合理解释逐一排除之后,零访问才有判断价值。
很多团队评估留用成本时只想到服务器空间和代码体积,这两项在现代站点里几乎可以忽略。真正持续产生成本的是下面几项:
换句话说,留用的代价主要落在维护和认知上,而不是存储上。反过来,下线的代价则集中在“误删仍被需要的东西”。两种代价不对称:留用的成本是缓慢累积的,下线的风险是一次性且可能不可逆的。这个不对称性决定了默认动作应该是先隔离、后删除,而不是直接删。
满足以下条件时,下线是合理选择:功能入口已经无法从站内正常到达;连续一个完整业务周期内没有真实用户访问或提交;没有任何外部系统通过接口、回调地址或固定链接依赖它;代码与当前主流程没有耦合,删除后不影响其他页面渲染。
具体动作可以这样执行:先把入口从导航和页面中移除,保留代码和路由,观察一段时间。如果这期间没有任何来自外部链接、收藏夹或接口调用的异常请求,再把代码归档到独立分支后从主分支删除。这个动作的结果会直接决定下一步——如果移除入口后仍有请求进来,说明存在你不知道的外部依赖,此时应恢复入口并转去排查依赖来源,而不是继续删除。
如果功能仍有零散真实使用,但已不在业务重点内,保留但降级往往比二选一更合适。降级的具体形式包括:从主导航移到页脚或二级页面;关闭对外推广入口但保留直达链接;停止新增字段开发,只做必要的安全修补。
假设一个茂名站点的“在线预约试听”功能,原推广渠道停投后每周只剩一两条提交。此时直接下线会切断这条线索,继续按原优先级维护又不划算。合理做法是保留功能、关闭推广入口、把它标记为“仅维护不迭代”,并约定下一次评估时间。这样既保住了存量线索,也把维护预期讲清楚了。
上面这套判断有一个明确的反例:当功能涉及用户已提交的数据,或者涉及对外承诺时,“没人访问”就不再是下线的充分理由。比如功能收集过用户手机号、报名信息或支付记录,即使入口无人访问,这些历史数据仍可能需要保留可查询、可导出的能力。此时正确的动作不是删除功能,而是关闭新提交、保留后台查询与导出,并单独确认数据保留期限。
另一个反例是功能虽已取消,但代码被其他模块复用。这种情况下删除表面功能可能连带影响其他页面,判断依据应从“这个功能有没有人用”转为“这段代码有没有被别处引用”。
下一步动作可以固定为三件事:确认最近一个完整周期的真实访问与提交记录;列出所有外部依赖和复用引用;根据结果选择下线、降级保留或仅关闭新提交。把这三步做完,留用或下线就不再是凭感觉拍板,而是一个可以复查的决定。