先不要凭“需求方说不要了”就删代码,也不要因为“已经做完了”就默认保留。更稳妥的做法是:拿现有页面、代码提交记录和后台入口做一次最小盘点,把功能分成“有入口、无入口但可调用、完全孤立”三类,再逐项判断留用、隐藏还是下线。缺少完整数据和权限时,这个判断依然能做,但结论只能限定在你实际看过的范围内。
需求取消不等于功能消失。你需要先回答一个事实问题:普通访问者、已登录用户、后台管理员,分别能不能碰到它。可执行的最小动作是打开网站前台和后台,按功能名称、按钮文案、菜单项、URL 路径各搜一遍,同时查看代码仓库里与它相关的路由、模板和接口文件是否仍被引用。
如果前台页面、后台菜单和接口调用都找不到,说明它至少目前不可达;但这不能直接推出“可以安全删除”。还有一种合理解释是:入口被权限或配置隐藏,换一个角色、换一个环境变量就会重新出现。反过来,如果入口还在,即使没人点击,也不能证明它无害,因为入口本身就是维护面和潜在风险面。
把功能拆成四个判断项,逐项打勾或打叉,比抽象讨论“有没有价值”更容易收敛:
四项都指向“无入口、无依赖、无数据、有替代”,才适合进入下线流程;只要有一项相反,优先考虑隐藏入口而不是删除代码。隐藏是低风险动作,删除是不可逆动作,两者不应混为一谈。
如果你拿不到访问日志、搜索词报告或后台操作记录,仍然可以做三件事:第一,在代码仓库中搜索功能名称和它涉及的接口路径,记录引用位置;第二,在数据库中确认是否存在对应数据表以及最近是否有写入,若没有权限查看,就记录“未确认”而不是假设为空;第三,在测试环境把入口隐藏后观察一个完整业务周期,看是否有报错、空页面或流程中断。
这个动作的结果会直接改变下一步:如果隐藏后没有异常,且代码引用只集中在功能自身,可以安排下线;如果隐藏后出现报错,说明它被别的流程间接依赖,应先解耦再谈删除;如果连测试环境都没有,只能先做代码标注和入口下线,保留文件,等具备回滚条件后再处理。
假设六安一家培训机构在网站建设时开发了“预约试听”表单,后来改为只留电话咨询,需求方要求不再使用。此时不要直接删除表单接口。先检查:前台是否还有入口按钮;后台是否有预约记录列表;数据库是否已有提交记录;是否有短信或邮件通知引用了这个表单。
若前台入口已移除、后台列表仍可打开、数据库有历史记录,那么合理动作是:先下线前台入口和通知任务,保留后台只读查询一段时间,确认无人需要导出历史数据后,再删除接口和表。这里的“保留一段时间”不是拖延,而是给数据留存和回滚留出窗口。若一开始就连后台入口一起删除,历史记录和可能的对账依据会同时丢失,后续再想恢复成本更高。
第一,回滚条件。记录删除前的代码版本、数据库备份位置和入口隐藏方式,确保出现问题时能恢复到可用状态。第二,责任条件。明确谁确认历史数据不再需要、谁执行删除、谁在删除后验证前台和后台主要流程。没有这两个条件,下线就只是把问题从“功能多余”变成“故障难查”。
最后要接受一个边界:在缺少完整数据时,你无法证明某个功能“绝对没人用”,只能证明“在当前可检查的入口、代码和权限范围内没有发现使用”。这个结论足够支持隐藏入口和准备下线,但不足以支持立即物理删除。把判断依据和未确认项一起记录,下一次有人问起时,处理方案才有可追溯的起点。