https://ryanbigg.com/2018/03/on-writing-software-well-2-a-review
想知道在,Ruby China 这里的看法,个人来说是偏向 Ryan,Callback 就是 too much magic.
@huacnlee @Rei 怎样看?
我认为有点过度解读了!
Callback 仅仅是一个辅助方式,让你可以在通过 Concern 的方式剥离各种各样复杂业务的时候,能将他们(各种 Concern 实现和基础 Model)组织起来,也可以給 Model 设定必要的基础处理流程。
Concern
Callback 被许多人看作是“Callback Hole”,我觉得是理解不够,或者是没有足够的把握好尺度! 这也是理解不够,组织不好(当前也包括我早些时候的一些项目实现,例如 Quora)。
而实际上 Ryan 后面 Mention::EavesdropForMentions 的例子,人家 Basecamp 也在用的:
Mention::EavesdropForMentions
@huacnlee 同感,有些解读过度的感觉
callback 可以 快速、水平、松耦合 地为软件扩展 辅助复杂 的功能,也就是 Using callbacks to manage auxiliary complexity 。
比如在 php 的 wordpress 世界中,就利用 callback 像钩子一样,方便地实现了丰富大量的 plugin。
callback 作为一种设计模式,也和其他的设计模式一样,有长处也有短处,主要看用在什么场合了。
是"Callback Hell"吧,JavaScript 非常常见,Ruby 也有人喜欢用 yield 模仿
好像 nodejs 里面也用了大量的 callback,只是没有细看过,留下这个印象。
nodejs 是因为 low 没办法采用 callback 的