先别急着删代码。评估的核心不是“需求还在不在”,而是这个已开发功能是否仍在产生可验证的价值、是否有人依赖、下线会不会造成不可逆损失。若它只服务于已取消的需求、没有真实访问或调用、且下线后不影响其他环节,就应进入下线流程;若它仍被用户、内部流程或外部合作方使用,或承载着数据迁移、合规留存职责,则应保留或改写成更轻的形态。
需求取消只说明当初的立项理由消失,不等于功能立刻变成负担。判断前先把它归入三类之一。
归类依据要来自可查记录,而不是印象。可查记录包括访问日志、接口调用记录、数据库写入时间、任务调度记录和代码引用关系。没有日志的项目,至少要做一次引用检索,确认没有其他模块引用它的路由、函数或数据表。
留用不是“懒得删”的借口,它需要明确前提。满足以下任一条件时,保留更合理:
这里的关键动作是给留用设定复查条件。假设某功能保留是因为“可能还有合作方在用”,那就约定一个观察窗口,例如下一次合作方对接或季度数据核对时确认调用情况。观察窗口结束后仍无调用,就转入下线评估。没有复查条件的留用,会变成永久搁置。
改写适合一种中间情况:原需求确实取消,功能整体不该继续以原形态存在,但其中一部分能力仍能服务当前目标。例如原本为某个已取消的报名活动开发的地区选择组件,活动不办了,但地区数据结构和校验规则可以复用到其他表单。
改写前要确认两件事:一是被保留的部分能否独立于原需求存在,不携带已取消业务的专属逻辑;二是改写后的维护责任归属谁。若没有人愿意接手改写后的模块,那它只是把下线问题推迟了。改写的实际动作通常是先复制出可复用部分,再删除原功能入口,最后验证新位置调用正常。验证通过后,原功能的删除才真正安全。
下线不是一次删除操作,而是一个有顺序的过程。顺序错了,问题会在最不方便的时候出现。
每一步之后的结果决定下一步是否继续。如果关闭入口后出现用户反馈,说明存在未识别的依赖,应暂停后续步骤,回到依赖排查。如果停用接口后监控显示仍有调用失败,说明调用方未完成替换,同样需要暂停。只有连续观察期内无异常,才进入数据清理。
假设某站点在需求取消后保留了一个旧的结果查询页。团队中有人认为还有用户在收藏夹里访问,有人认为早该删除。可以这样处理:先保留页面但移除站内入口,记录一个月的访问来源。若访问量主要来自外部收藏或历史链接,且页面内容仍准确,可考虑保留并标注为历史查询;若访问量极低且页面数据已过期,则进入下线流程。这个例子中的数字只用于说明比较方法,实际窗口长度应按业务节奏确定。
需要提醒的是,访问量归零不能单独证明可以下线。它也可能是入口被移除、链接失效或统计代码缺失造成的。要结合调用记录、用户反馈和引用检索一起判断。反过来,有一定访问量也不自动等于必须保留,还要看这些访问是否来自真实用户而非爬虫或误触。
最终决策可以落成一句话:保留的,写清复查时间;改写的,写清接手人和复用范围;下线的,写清依赖确认和数据处置方式。三者都比“先放着”更可控。