Gem 转帖:Kill Your Dependencies

fsword · 2016年04月05日 · 最后由 fsword 回复于 2016年04月12日 · 2628 次阅读

https://www.mikeperham.com/2016/02/09/kill-your-dependencies/

Rules to Remember

Some software engineering rules:

    No code runs faster than no code.
    No code has fewer bugs than no code.
    No code uses less memory than no code.
    No code is easier to understand than no code.

Kill those dependencies. Your gems and apps will be better for it.

感觉很有道理,俺觉得 Ruby 社区应该兴起一场简化依赖的运动......

Node 表示看看不说话

遇到了两个库依赖了不同的 HTTP 库,但实际上 Net:HTTP 就能满足。

尝试过了,但是效果不是很明显,因为你会遇到两种人:

  1. 我知道 xxx,yyy,zzz 我都没用上,但是万一哪一天我要是需要这样的功能呢?
  2. 我曾经某一次做某个功能时,突然发现 aaa 可以用的上,直接就用了,所以 bbb,ccc 存在在我的项目里是有道理的,即使我没有用到

以身作则:https://github.com/chloerei/alipay 没有运行时依赖。

所以要求大家尽量不要贡献库么 ^-^

有道理,但对于 ruby 来说,我们用它,不就是因为开发速度快吗?减少了依赖,但自己写的代码往往更多了,自己写和一个开源大家一起维护的 gem,一般来说后者会比前者更稳定。 各种 gem 拿来即用,快速组装成我们的线上产品。

很有哲学味道

减少了依赖明显自己要写的代码更多了,怎么还 no code no bug 啊,就像不依赖 rails 直接写,那不得累死。。。

也有可能重复造轮子。

直线的两端分别是:

  1. 依赖很少,大量自己造轮子
  2. 依赖很多,以至于太多冲突和 Bug

实践的话,在这两者中间比较舒适。

#10 楼 @kgen 同意

从实践的角度看,最终用户使用的 gem 可以有其它依赖,比如 rails,我们作为应用软件开发者,建立对它的依赖不会传递给别人。 但是被其它 gem 依赖的 gem 就要慎重了,比如 rails 所使用的各种 gem,其作者就要尽量避免依赖,这是为了减少间接依赖导致依赖过度膨胀和引入复杂性

只用大功能的库,比如 rcairo, imagemagick, 自己封装不划算,JS 那种整个 padding 也要个库的,是笑话。

自己造轮子 —— 维护成本高 用依赖 —— 依赖本身也有依赖

如果不想有依赖,Rails 都不应该用

读完全文,Mike 强调的点似乎是:Kill Your Dependencies when you write a library

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