• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Mannnnning
V2EX  ›  程序员

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

  •  
  •   Mannnnning · 8h 57m ago · 1893 views

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

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

    又不是不能用.jpg
    Ashe007
        15
    Ashe007  
       6h 44m ago
    @defphilip 外部 try catch 之类的处理一下就好了吧,伪代码可能并没有把这部分贴出来
    allenzhangSB
        16
    allenzhangSB  
       6h 38m ago
    这里不是 callRpc 接口设计的问题吗? 提供一个可以直接查询到第一个单号的接口不就行了?
    Mannnnning
        17
    Mannnnning  
    OP
       6h 35m ago   ❤️ 1
    @Ashe007 这种逻辑复杂度在设计层面,就应该用空间替换啊。碰到高并发场景、整个机器都会被死循环拖垮。
    KongLiu
        18
    KongLiu  
       6h 17m ago
    @defphilip ?这不是伪代码吗,只是讨论循环的情况,外部没有提供批量查询的接口,你用 AI 黑进第三方服务器给你改接口是吧
    pulutom40
        19
    pulutom40  
       6h 10m ago via iPhone
    天天喊着要被 ai 替代了,大概率就是这种人
    lesismal
        20
    lesismal  
       5h 33m ago
    看不懂 OP 要表达什么。
    是我太菜了吗?
    Levox
        21
    Levox  
       5h 0m ago
    所以楼主有什么高见可以看看吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1125 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 18:13 · PVG 02:13 · LAX 11:13 · JFK 14:13
    ♥ Do have faith in what you're doing.