先看两个条件:这个功能是否还有真实使用方,以及它是否与其他模块产生耦合。若仍有稳定访问或数据依赖,留用并补文档;若没有任何入口、调用和业务归属,就进入下线流程。不要因为“已经写完了”就默认保留,沉没成本不是留用理由。
判断依据不是开发者的印象,而是可观察的证据。可以查访问日志、接口调用记录、数据库表的读写时间,以及代码里是否被其他模块引用。只要其中一项显示近期仍有真实请求,或者有定时任务、报表、导出流程在读取它,就说明它不是孤岛。
这种情况下,实际动作是把它从“主功能”降为“兼容模块”:保留入口但不再投入新需求,补一份最小说明,写清它依赖哪些表、由谁触发、停用会影响什么。做完这一步,下一步的决策会变清晰——如果半年后调用量持续为零,且没有数据依赖,就可以再次评估下线,而不是现在仓促删除。
要注意一个例外:调用量下降不等于功能无价值。可能是入口被改版藏起来了,也可能是外部合作方换了调用方式。请求归零至少有三种解释:真的没人用、入口断了、统计口径变了。需要先排除后两种,再谈下线。
如果代码检索不到引用、日志里没有请求、也没有任何业务方认领,那它就是一个悬空功能。此时合理的动作是下线,但不要直接删代码。
这样做的结果是:如果下线后出现遗漏的调用方,可以按提交记录快速恢复入口,而不必重写。下一步才决定是否清理数据表——这一步通常要等更长时间,并且要确认没有报表或对账依赖。
团队内部对留用还是下线有分歧时,把讨论转成证据核对,比反复表态有效。可以按下面几项逐条确认:
五项全为否,下线依据充分;只要有一项为是,就先留用并降级维护。这个判断不依赖主观感受,也方便在后续复查时复用。
假设某云南本地服务类网站曾开发一个短信提醒模块,后来业务方向调整,提醒改由人工在群里通知,需求随之取消。开发已经完成,代码还在仓库里。核对证据发现:后台入口已从菜单移除,日志里三个月没有调用记录,但有一张表被月度报表读取。
按上面的规则,它属于“有数据依赖”,应留用并降级维护:保留报表读取路径,停掉短信发送入口,补写说明注明停用原因和恢复方式。等报表改版不再读这张表之后,再进入下线流程。这个顺序避免了一次性删除导致报表出错,也避免为了一个没人用的入口继续维护发送逻辑。
第一,下线动作要可回退,删除前先停用,停用前先记录。第二,留用不等于继续开发,降级维护的模块不应再接收新需求,否则它会重新变成负担。评估的终点不是“删或留”这个结论,而是让每个模块都有明确的归属和下一步动作。