Ruby rbs 将给 ruby 带来质的改变

gaicitadie · 2021年07月14日 · 最后由 easonlovewan 回复于 2021年07月16日 · 1089 次阅读

或许 ruby 社区会分裂,一部分保守派会拒绝 rbs,继续使用编辑器。

ide 党的福音来了,rbs 将彻底解决 ruby 太灵活导致的 ide 提示不准确的问题。

当然 rbs 施行类型标注以后,返回类型的灵活性要做一些牺牲,虽然 ruby 仍然支持动态类型,显然使用 rbs 的开发者会更注重确定类型,而放弃使用 ruby 灵活的那部分。

所以我说,ruby 社区会因此分裂为两个派别。

是福是祸呢?我们拭目以待。

RBS & Solagraph

看不出来为何使用编辑器=拒绝 RBS,Matz 在 19 年的 RubyConf China 都点名 Solargraph 了。

我现在就用 Emacs+TIDE 写 TypeScript

ruby 的速度也许能在将来硬件弥补。但 ruby 的失败早已命定。比如对冒号的乱用导致代码可读性极差,比如 rails 里验证函数是那样恶心和丑陋以至于我不想再看第二眼。ruby 成也语法,败也语法. 时代已经过去,只可惜继任者还没上来

maglev 回复

代码贴出来看看。主要问题是没有 type 检查吧。

chenge 回复

想象一下,ruby 冒号能加在标签前面,又能再加在标签后面。一个 ruby 函数多参数不需要加括号,然后参数有符号又有散列,有的有默认词,有的没有默认值,有的键和值都是符号。这不的的确确是语法 bug。但 Ruby 语法 Bug 不光光是冒号问题,其他的问题也同样严重。这也是为什么很多人用 Python 原因

同样都是做类型声明,Python 的方案是在原文件里操作,做类型注解,Ruby 却是新开一个文件。rbs 出来这么久大家都不感兴趣不使用,自然是 rbs 设计本身出了问题。 在过去 20 年,日本一直在点错科技树,rbs 不外乎也是日本人又一个"杰作"罢了。

ThxFly 回复

rbs 新开一个文件,的问题,完全可以由 ide 来弥补,我相信将来 rubymine 就会解决这个问题。

对 IDE 来说实现这样的功能并不难:

让类型声明看上去在同一个文件中,实际上在 rbs 文件单独保存

maglev 回复

冒号在 ide 里面丝毫没有违和感

关于函数不加括号,现在 python 也加上这个语法了,不过 python 实现的还是有些保守,需要用 property 装饰器(https://docs.python.org/3/library/functions.html#property),并且加上这个装饰器后,就不能再加参数了。

关于多个参数不加括号,我原则上是自己实现的函数只要有参数都加括号,没参数的一律不加,不加括号会看上去赏心悦目很多,不然 python 也不会加这个功能。

多个参数还不加括号的,一定是作者在定义方法的时候已经考虑到不加括号了,比如 rails 的 migration,确实不加括号读起来更优雅。

gaicitadie 回复

ahsh shxhh, sjfrhs::iht, shu:, ihc: hhv, gggs: :xjhg ,tjc :jh 冒号辨识度低对人的功耗很极大,另外双冒号里有类名常量名的歧义,点连冒号忘说了。面向对象编程是为了让交互更便捷,但 ruby 反而比 C 语言麻烦多了,走火入魔典型

但 ruby 反而比 C 语言麻烦多了,走火入魔典型 这是在行业经历了什么才说出这样的话😂 😂 😂

需要 登录 后方可回复, 如果你还没有账号请 注册新账号