大家是否在初学 Rx(响应式扩展,经典如 RxJs, RxJava)时,觉得它的写法反过来会更好理解? - V2EX
Newyorkcity

大家是否在初学 Rx(响应式扩展,经典如 RxJs, RxJava)时,觉得它的写法反过来会更好理解?

  •  1
     
  •   Newyorkcity Jan 15, 2022 2333 views
    This topic created in 1583 days ago, the information mentioned may be changed or developed.
    我 订阅了 报纸,或者说,我向某家报纸发行商订阅了每日晨报。
    ->
    I subscribe a newspaper or I subscribe a <newspaper company>


    那在 Rx 的概念里,newspaper company 有数据(也就是每日晨报)要发送,是一个可订阅或者说可 Observe 的东西,所以应该是 Observable 的一个实例)。

    而『我』抽象出来的话应该是一个 Observer 类型(具有订阅的能力,并且在获得到订阅的东西后有一些行为)

    所以写成代码后应该是 I.subscribe(newspaperCompany)

    然而

    interface Observable<T> {
    Subscription subscribe( Observer s )
    }

    所以 RxJava 里应该写成 newspaperCompany.subscribe(I)

    就让我非常难顶。

    实在不行,这个方法名能不能从 subscribe 改成 register 啊,

    newspaperCompany.register(I) --> 报纸发行商把订阅报纸的我注册在要发每日晨报的名单里了 我一下子就觉得好理解和舒服得多

    这里为什么这么设计呢?

    谢谢
    13 replies    2022-01-16 11:47:53 +08:00
    cmdOptionKana
        1
    cmdOptionKana  
       Jan 15, 2022
    单听你说的,我觉得也很有道理,蹲一下看看别人怎么说
    ipwx
        2
    ipwx  
       Jan 15, 2022
    反正不符合语法。

    真正符合语法的是 I subscribe to a newspaper
    mx8Y3o5w3M70LC4y
        3
    mx8Y3o5w3M70LC4y  
       Jan 15, 2022 via iPhone
    你打别人电话时,如果对方挂断会有一个英文提示。the subscriber you dialed is busy now ,你猜为什么你打电话的那个人,是 subscriber 呢?
    Newyorkcity
        4
    Newyorkcity  
    OP
       Jan 15, 2022
    @ipwx
    @lvdb

    这 subscribe 这个不会像 除以和除那样 subscribe to 是除以,subscribe 是除吧。。。。。
    o02VFqu3gZnZfX8n
        5
    o02VFqu3gZnZfX8n  
       Jan 15, 2022 via Android   1
    一点是方便链式调用

    报纸被发行商出版.被邮递配送.被某人阅读

    调用链没有嵌套,是平的
    ipwx
        6
    ipwx  
       Jan 15, 2022
    @Newyorkcity 没有这种用法。
    deppan
        7
    deppan  
       Jan 15, 2022
    我已经使用 RxJava 开发 Android 4 年, 开发的 Web 应用我也使用上了 RxJs.
    当你理解它的编程模式后, 尤其是 Android 开发, 那真的就是爽. 线程切换, 多线程控制执行, 网络请求重试, 请求内容或响应内容变换, 网络请求在应用指定生命周期自动关闭等. 这些使用熟练后写代码真是得心应手.
    Newyorkcity
        8
    Newyorkcity  
    OP
       Jan 15, 2022
    @WoodenTea 当初学时怎么理解透彻的有留下笔记不
    DrJekyll
        9
    DrJekyll  
       Jan 15, 2022   2
    客体思维,就是说英文经常以物作主语,多被动语态;而中文则多以人作主语,很少有被动。这里看到的 -- https://www.zhihu.com/question/29877577/answer/868178757 。感觉应该和这个有点关系。
    deppan
        10
    deppan  
       Jan 15, 2022   1
    @Newyorkcity 我有一个严重的缺点就是不会做笔记.
    我当时学习 RxJava 的时候是根据一名叫「扔物线 」的网友写的一篇文章开始的(现在网上还能搜索到), 我感觉最基本的功能都介绍到了.
    当时是 RxJava1, 现在是 RxJava3, 有几个关键字已经修改.
    luob
        11
    luob  
       Jan 15, 2022
    函数式语言就不会纠结这种语义,不管谁订阅谁都应该是 newspaper |> Observe.from |> Observe.subscribe me
    Mav
        12
    Mav  
       Jan 16, 2022 via iPhone   1
    你把 subscribe 理解成 addSubscription 是不是就好理解了?
    Newyorkcity
        13
    Newyorkcity  
    OP
       Jan 16, 2022
    @Mav 对 这就是我想说的。。
    About     Help     Advertise     Blog     API     FAQ     Solana     5941 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 60ms UTC 06:56 PVG 14:56 LAX 23:56 JFK 02:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86