之前做 PHP 后端遇到过,当时是接手前人的项目,前端报类似的 BUG 给我。
我以为是个很简单的问题,就开始追查,结果发现像在扯毛线头。。。
从收到请求开始,网关、业务层、框架、三方库、数据库、缓存、内部微服务。。。所有地方都可能出问题。
各处代码的维护者对这些值的校验逻辑不一致,业务逻辑的差异又导致不确定会经过哪些处理链路。
最后 leader 问我多久能解决这个问题,我说需要添加一个中间件来统一 ResponseBody 的 json 映射逻辑,估计要一个月,将中间件应用到所有 PHP 服务,测试所有受影响的接口,再做相应的适配,需要估计两到三个月,前端受影响的地方需要同步更新,需要他们评估时间。
最后采用的方案是在前端报 BUG 的那个接口返回时对指定两个 key 做一次 cast ,工期 1 小时。
上面看起来是一个我被“急功近利”的领导压迫下不得不写 dirty code 的故事。不过我后来简单统计,那个项目上线到我离职为止,同样原因的 BUG 两年多时间内我处理过 4 、5 次,算上同事处理的总共可能十多次,大概耗费的总的工期在 2 到 3 天。所以我也不敢说我的想法真的就比当时的 leader 高明,毕竟眼界和职责都不一样。
(这个问题看起来应该会出现的非常频繁,但实际上很多时候不触碰到一些特殊 case 是不会被发现的,容易发现的地方一般在自测时就会顺手改掉,所以实际被主动上报的情况反而不多。)