服务端开发错了,客户端就应该错着适配

14 小时 4 分钟前
 mouyase

前情提要

我们的产品今日在开发环境暴露出一个风险,某些数据取值取不到了导致产品崩溃。

排查了半天数据和逻辑之后,发现是因为某个接口返回的数据新加了一种类型,但是这种类型的定义和之前的另一种类型是相同的,导致代码合并后,有的数据处理认为是之前的类型,有的认为是之后的类型,导致某些判断分支没有达成,最后导致数据没有正确解析。

问题简述

我们排查了问题之后,理了一下现在的逻辑。

假设我们之前的数据有 A ,B ,C 三种类型,然后根据数据的 type 字段等于 A ,B ,C 来判断数据类型,再根据类型去做相应的数据解析和操作。

但是现在服务端只在某些接口中,把 C 类型给区分成了 C 类型和 D 类型。C 类型的 type 字段是 C ,D 类型的 type 字段是 D 。但是现在的 D 类型的数值是我们之前客户端用的 C 类型,现在的 C 类型则是之前我们客户端会过滤掉的一种数据。老的接口中依旧只有 type 值为 C 。

于是我们现在如果需要在老的接口判断是否是我们需要的类型,就要经历下面几个判断才能确定值的类型。

争议

理清逻辑后,我就去找服务端理论,为什么要设计成这样。

讨论了半天,总之就是服务端那边不同的人代码逻辑没有统一,最后导致类型定义不统一。

但是服务端表示我们不会改,因为改了容易出问题,而且 Web 端已经适配了,希望我们也适配一下。

我便问他: “但是你这逻辑已经错了,不处理一下吗?我们要适配你们的错误逻辑吗?”

服务端表示: “服务端写错了你们就错着适配吧。”

4314 次点击
所在节点    程序员
54 条回复
cnoder
7 小时 40 分钟前
一般有问题都是服务器兼容吧,客户端要发版啊,怎么可能随发随改
vipfts
7 小时 30 分钟前
谁工资高听谁的, 谁工资高谁干活
securityCoding
7 小时 9 分钟前
你们的 app 没啥人用吧....这后台这么犟种要是在我们组下一秒就得拉总监进来了~
Anarchy
7 小时 2 分钟前
只有服务端给客户端擦屁股的情况啊,客户端强制升级成本很大的。
fregie
6 小时 55 分钟前
看对错没有意义,看成本和风险(当前的和未来的)
Foxkeh
6 小时 45 分钟前
屎山就是这么来的
dudubaba
6 小时 41 分钟前
前端确实龟,不然也不会处于鄙视链最底层了
hefish
6 小时 30 分钟前
完全不用的,只要来 v2 发帖,声讨相关开发, 错误就会自动修复的。
ugpu
6 小时 28 分钟前
前端: 后端写的啥玩意 没统一 天天折腾人 知道写代码嘛?
后端: 说一万遍你还是个贴图仔! 数据结构 业务需求你不懂!照着刷新显示就行了! 有些事你不懂, 历史遗留问题在那里!

建议: 全栈(干)
tyrantZhao
6 小时 24 分钟前
不应该是评估下修改带来的风险么?
Ghostisbored
5 小时 36 分钟前
我们前端后端都是商量着来的 怎么方便怎么来 要不工作还干不干下去了
zyzweb
3 小时 9 分钟前
@slert 拼错的没办法只能将错就错
xuld
2 小时 59 分钟前
成年人不能执着于讲道理。
当年日本鬼子说丢了个士兵就要进攻,他和你讲道理了吗?
永远记住:真理只在导弹射程中。

在中国公司里面,老板就是道理,技术不是,你更不是。

从客观看,后端承认了错误、前端兼容了错误、而你不愿兼容。

如果你兼容了,一定程度上会让代码变得更难维护,但你赢得了“容易合作”的荣誉。

如果你坚持让后端改了,甚至让前端也改,那你就是修复了一个错误,同时你得罪了两个开发。

关键看你的领导是个什么类型的人物。

如果你的领导是个知人善用的类型,他会鼓励你坚持自己的底线,这样错误才会纠正,才利于公司长期发展。

如果你的领导是个有控制欲、图稳类型,他会觉得你破坏了团队和谐,给你打上“不愿配合”、“不好管理”的标签,并加速对你的清理,这样公司剩下的都是碌碌无为的庸才。

如果你明确分析了不同选择带来的后果,自然知道自己应该怎么做。

总之,不同的选择会有不同的结果,事在人为
xuanbg
1 小时 4 分钟前
关键在于这是一个历史包袱啊,不是后端一开始就做错了。后端肯定不会去改的,改成对的万一出点意想不到的问题,他接不住。换我也是不肯改的。代码就在那,你们谁要改都可以,反正我不接。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1082855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX