结论先给:在大多数内容型CMS项目里,需求取消后已经开发完的功能,默认应评估下线,而不是因为"已经做完了"就保留。保留的合理条件通常只有两个——它已经被真实内容流程使用,或者它承担了其他功能无法替代的基础职责。若只是代码写完、后台入口存在、但没有内容编辑实际依赖它,留用往往只是把一次性开发成本转成长期维护成本。
需求取消意味着业务目标不再成立,但代码不会因此消失。评估时要把证据分成两类:一类证明这个功能还在被用,一类只证明它曾经被做出来。
如果只有第二类证据,留用的理由通常是"删了可惜",这属于沉没成本,不是运维依据。此时更合理的动作是标记为待下线,而不是继续投入适配和升级。
下线本身也有成本:要清理数据表、处理历史内容引用、调整权限配置、验证删除后不影响其他页面。当这些成本高于继续维护时,留用是成立的。
一个可操作的判断方法是做一次短期观察:假设把该功能入口隐藏两周(不删代码,只改配置或权限),然后检查三件事。
如果两周内没有任何编辑依赖它、没有新数据写入、其他功能正常,那么下线风险很低;反之,只要有一项出现依赖,就应转为保留并纳入正常维护范围。这个观察期的长度可以按内容更新频率调整,更新越慢的站点,观察期应越长。
假设某CMS里有一个已取消的"专题聚合"功能,后台入口没人点,看似可以下线。但它生成的数据表被首页模板通过查询直接读取,即使编辑不再新建专题,旧专题仍在页面上展示。这种情况下,直接删功能会导致首页报错或内容缺失。
这个反例说明:判断依据不能只看后台使用情况,还要看前台和其他模块是否间接依赖。要排除这种可能,需要检查模板、接口和定时任务里是否出现该功能对应的数据表名或字段名。只有确认没有外部引用,下线结论才成立。
如果结论是下线,动作应分步执行,而不是一次性删除。先隐藏入口并停止新建,再观察一个内容发布周期,确认前台正常后,再清理代码和数据表。这样即使出现遗漏引用,也能在数据被删除前回退。
如果结论是留用,就要把它从"已完成项目"转为"在维护功能":补上负责人、明确它依赖哪些数据表、在下一次CMS升级时纳入兼容性检查。否则它会以隐形成本的形式存在,在升级或迁移时突然变成阻塞项。
无论哪种结论,都应记录判断依据——是观察到真实使用,还是确认无外部引用。这样当需求再次变化时,不必从头重新评估。