先给结论:不要因为“需求已取消”就立即下线,也不要因为“已经开发完”就默认留用。判断依据应放在三件事上——这个功能是否仍在产生真实访问或业务动作、它是否与其他在用功能重叠、以及保留它每年要消耗多少维护与安全成本。三者中只要“持续产生真实价值”这一条成立,就倾向于留用并补文档;如果三条都不成立,才进入下线流程。
假设一个建站一条龙项目里,客户在半年前提出“会员积分兑换优惠券”功能,开发完成后又通知运营策略调整,不再做积分体系。此时功能代码、数据库表和后台入口都已存在,但没有任何前台入口指向它。团队面临的问题不是“删不删代码”,而是“这个已开发功能该不该继续保留在系统里”。
第一步不是看代码量,而是查证它是否还在被使用。具体动作:从服务器访问日志和后台操作日志中,分别统计该功能相关路径与后台入口最近一个完整季度的请求量。如果前台请求量长期为零,但后台仍有运营人员偶尔打开配置页,说明它可能被当作备用工具,不能直接判定为死功能。请求量归零的合理解释至少包括:入口被隐藏、跳转链路被改、监控未覆盖该路径、或者确实无人使用。只有排除了前几种解释,零请求才能作为下线证据。
倾向于留用的条件:该功能仍被至少一个真实业务动作依赖;或者它承载了合规、数据留存等无法用访问量衡量的要求;或者下线它的迁移成本高于再保留一个维护周期。倾向于下线的条件:功能与现有模块高度重叠,保留会造成两套逻辑并存;它依赖的第三方接口已无法确认可用状态;或者维护它需要持续投入人力,而没有任何可验证的使用记录。
这里有一个容易被忽略的取舍:留用不等于原样保留。可以先把功能从导航和入口中摘除,保留代码与数据表,进入“冻结观察期”。冻结期间只修安全漏洞,不加新特性。观察期结束后再复查一次使用记录,这时得到的结论比取消需求当天更可靠。
假设某建站一条龙交付的站点中,一个“多语言切换”模块在需求取消后仍保留着。团队先做了冻结处理:隐藏前台切换入口,保留语言包和路由配置。三个月后复查,发现搜索引擎仍收录了部分语言子路径,并有少量来自这些页面的访问。此时正确的下一步不是恢复完整功能,而是评估这些页面是否应做重定向或保留静态版本。这个例子说明:留用或下线不是二选一,中间状态往往才是成本最低的答案。
如果决定下线,按以下顺序操作,每一步的结果都会影响下一步:
这套顺序的核心是:把“删除”拆成“隐藏、观察、清理”三个阶段,避免一次性操作导致无法回退。
无论最终选择留用还是下线,都应留下一份简短记录,写明判断日期、依据的访问数据区间、参与判断的角色、以及下次复查时间。这样做的好处是:当同一功能再次被提起时,团队不必重新争论,而是直接查看上一次的判断条件和结论是否仍然成立。对于建站一条龙项目而言,交付后的功能取舍往往比开发阶段更容易被忽略,而这份记录正是让决策可追溯的最小成本方式。