重复造轮子对于用轮子的人没有意义,但是对于造轮子的人有意义。
大家所共识的轮子,最优解谈不上,最起码可以说是相对的合理解。(比如圆形,橡胶外部,充气)
你自己再造一个,要么就是为了赶上现有轮子的性能,对现有的轮子进行像素级克隆。
要么造出来一个方形的、或者木头的轮子(总之提升有限)
这个澄清很好,「重新造」没啥问题,只要有价值就行。
@acmore
我认为主想表达的意思可能是:
> 就像此书中引用的一句无法考证其作者的话说的那样:任何计算机的问题都可以通过增加一个层来解决。
>…
> 随着各种问题的解决,计算机的层增加的越来越多,我们这一代新成长的程序员离底层也越来越遥远了,而且可能还会越来越远。因此常听人感叹,计算机技术有多么的日新月异,多有追赶不及的感伤。
>…
来自网友对<程序员的自我修养:链接、装载与库 >的书评.
不要重新发明轮子,也不是说重新发明了没用,而是说不要局限在之前已经发明过的那些部分。
为使用重复造轮子没什么意义,除非现有轮子满足不了你的要求。
拆开来看,就是“造”,和“轮子”。
那么,轮子是什么?
如同上面说的一样,计算机就是一个天然的分层架构,无论上深入到底层,门电路封装成一些组合电路和时序电路,把底层封装的操作系统,封装系统 API 的 shell 程序,还是 web 里的 web 框架,log 框架等等。可以复用的,我们就可以抽象为一层,封装一下。
现在再看,轮子是什么?轮子就是一层的意思,无论你写编译器还是写 web 框架,都是轮子。
那么,什么是造轮子?
自己去思考,有哪些可以封装,需要抽象到一层中,API 要怎么设计,怎么优化等等。这就是造轮子的过程。
那么造轮子这个过程,我们能学到些什么?
上面说了,我们可以学习底层实现原理,要踩的坑等等,同时这个过程也是读源码,设计的过程,这很大程度的提升了我们对这门语言的使用,经常会学到很多技巧,这对我们使用这门语言是很有好处的。同时呢,如果我们造的轮子就是平常经常用的,那么我们日常的工作就不是建立在黑盒上,我们的日常编写代码将更透明,设计站的高度更高,debug 也能深入到底层去。
那么造轮子有什么坏处?
当然有坏处了,坏处就是很消耗时间,如果和业务没处理好平衡,这就凉凉了。
那么为什么有人会说,不要重复造轮子?这究竟是什么意思?
不说别人说什么就是什么,这句话我们看它的来源,其实英文并不是这个意思。表达为,不要在生产中,用自己造的轮子。这句话就很好理解了,除了那些不得不自己造的情况外,如果有现成的轮子,就不要造,因为你的能力大概概率没有别人强,别人的时间,兼容性,性能等等,大概率比你好,如果出了问题,你自己造的话,还加强了维护的工作量。当你真的造过轮子,你就应该对自己的实力有所了解,你的轮子真的是圆的?