工作 8 年,这样 while 循环调别人接口是什么水平?

Mannnnning 2026-06-29 17:15 1

同事写的代码,循环调了别人接口 50+次



var callRpc(var id) {
此处省略(P99 = 2S)
}

var getId() {
var id = 0;
while(true) {
tmp = callRpc(id);
if (tmp <=0) {
break;
}
id = tmp;
}
return id;
}

最新回复 (26)
  • Chemist 06-29 17:38
    1
    怕什么,callRpc 会阻塞,又不会并发出去。你这边不 while 循环保证拿到 id ,那一定会在别的地方循环调你这个 getId() 方法 50 次。抛到最上层,那就是用户手动点按钮一直点。然后前端弹了 50 个 message 之后请求成功。业务复杂度不会降低,只会转移。
  • frank1256 06-29 17:53
    2
    你不能立马怪他,也许对方就不提供批量接口,能咋办。我遇到过对接方的,就不给批量,高端点就并发调呗
  • MoozLee 06-29 18:00
    3
    比较好奇在三方不提供批量接口,且不允许并发的情况下。除了循环还有什么办法?项目上正好有一个需要调 1000 次三方接口的需求,三方不允许并发。
  • KongLiu 06-29 18:07
    4
    第三方接口的无奈之举,很正常
  • lnbiuc 06-29 18:18
    5
    现在都是抛开业务逻辑和实际使用场景不谈吗
  • FrankAdler 06-29 18:35
    6
    蠢或者懒,我前几天刚好处理了一个循环调用,他代码注释写的批量,紧接着就 for 循环调用,可惜人已经被裁,问不到真相了。
  • winnerczwx 06-29 18:50
    7
    刚入行才会考虑优不优雅, 入行久了只会考虑 这个方案在这个场景下能不能解决问题, 有没有其他风险, 有风险会在什么情况下爆发 我是否可控, 如果一切都 OK 那就干
  • Ashe007 06-29 19:06
    8
    楼上是认真的吗?我怎么觉得 break 的时机很奇怪呢,除非这个做法跟业务强绑定,否则我认为这是一段差劲的代码
  • Mannnnning 楼主 06-29 19:12
    9
    @Ashe007 是真实事件,单号续约场景、从当前单号逐步查询到第一个单号。
  • Mannnnning 楼主 06-29 19:15
    10
    @lnbiuc 行业信息被我脱敏了。续约场景,从当前最爱你查询到第一个原始单号。
  • defphilip 06-29 19:21
    11
    这不是一坨垃圾吗,评论区在洗啥,一个最简单的问题,如果查失败了怎么办?外部知道发生了什么?

    所以 AI 很好,替代这些废物用的
  • Ashe007 06-29 19:21
    12
    @Mannnnning 如果 id 为第一个单号,call 返回零或负值,那完全没问题。赞同一楼(更准确的表达应该是:复杂度不会消失,只会转移)
  • ghostman 06-29 19:24
    13
    你的意思是代码不够简洁,还是不该循环调用?
  • Reficul 06-29 19:27
    14
    身经百战见得多了,总想搞个大新闻。

    又不是不能用.jpg
  • Ashe007 06-29 19:28
    15
    @defphilip 外部 try catch 之类的处理一下就好了吧,伪代码可能并没有把这部分贴出来
  • allenzhangSB 06-29 19:34
    16
    这里不是 callRpc 接口设计的问题吗? 提供一个可以直接查询到第一个单号的接口不就行了?
  • Mannnnning 楼主 06-29 19:38
    17
    @Ashe007 这种逻辑复杂度在设计层面,就应该用空间替换啊。碰到高并发场景、整个机器都会被死循环拖垮。
  • KongLiu 06-29 19:56
    18
    @defphilip ?这不是伪代码吗,只是讨论循环的情况,外部没有提供批量查询的接口,你用 AI 黑进第三方服务器给你改接口是吧
  • pulutom40 06-29 20:02
    19
    天天喊着要被 ai 替代了,大概率就是这种人
  • lesismal 06-29 20:39
    20
    看不懂 OP 要表达什么。
    是我太菜了吗?
  • Levox 06-29 21:12
    21
    所以楼主有什么高见可以看看吗
  • sir283 06-30 07:44
    22
    抛开业务背景直接谈代码,没有意义,就像有人会问:会 printf("hello");是什么水平一样。
  • wanei 06-30 10:20
    23
    大部分代码都是处理边界条件和异常的。功能实现就行。此外 id 返回的值不符合预期,return 应该在 break 那。
  • wanei 06-30 10:22
    24
    @wanei #23 缩进看错了...
  • lingxipaofan 06-30 11:09
    25
    这个缩进看的好难受
  • Mannnnning 楼主 06-30 11:31
    26
    @lesismal 想要吐槽一下同事写的代码,昨天我刚把这个循环去掉了~
* 帖子来源V2EX
返回