百科问答小站 logo
百科问答小站 font logo



外界人总爱说程序员喜欢重复造轮子,对此你怎么看? 第1页

  

user avatar   present-is-gift 网友的相关建议: 
      

其实吧,自己造的轮子用起来特别安心。

首先,花费(运算量)太高。用别人的轮子不可避免地要接受别人的设计。你本来打算做个小马车摆在外面好看。结果拿来别人的轮子一看,又是防爆双轮胎,又是防弹钛合金,好是好,可是绝大多数功能用不上。但需要花的钱(运算量)却要几百几千倍,你说这种情况下你造不造一个自己的轮子?

其次,质控困难,别人的轮子也会有毛病(bug),而且一旦出问题就会完全失控。你没有那些奇形怪状的螺丝刀,连紧个螺丝都做不到。如果是第三方免费轮子,只能等新品出来替换。能不能把你的问题解决还不一定。如果是花钱买的轮子不免要跟供应商扯皮。很简单的小问题来来回回要撤几个星期。

再次,兼容问题,别人的轮子看着不错,有时候跑一跑就不转。回头一看跟你的轮轴不匹配。为了用别人的轮子,还要换自己的主轴。可是自己的主轴有时候却又是换不得的。

最后,难以扩容,比如改换一下轮子的尺寸。让轮子遇到冰就换成履带模式。别人的轮子你无法改变,所有功能都被限制死。

因此,只要是扎扎实实想要做大做强的公司,在时间资源允许的情况下,能自己造轮子就自己造轮子。与之相反,炒概念,赚快钱的公司,能用别人的轮子就用别人的轮子。

对于外行人来看,程序员的工作好像常常重复造轮子。其实,看似重复的每次造轮都有所创新,都有通用轮子达不到的需求。

因此,这种所谓程序员喜欢重复造轮子的说法其实跟“披萨就是把烧饼馅放在外面”一样,是外行对内行的误解。


user avatar   justjavac.com 网友的相关建议: 
      

我在之前的文章百行代码,千行测试里面曾写过:

不要重复发明轮子。

很多大牛推荐我们“造轮子”,但是造轮子的目的是为了学习,而不是使用,尤其不要用在生产环境。

造个轮子很简单,但是你非要把自己的轮子安在汽车上,开上路,那肯定是一个安全隐患。

有很多人会说,“既然自己可以写一个,为什么非要用别人的?” 还有人觉得,有些非常小的功能不需要使用别人的。

很多人还会借此吐槽 leftpad 模块,但是平心而论,你自己能徒手这一个没有 bug 且高性能的 leftpad 函数吗?

前几天我们项目组就遇到了一次,其实功能很简单,一个页面分享出去,并使用 url 携带参数。比如:

aaa.html?id=123456

看似很简单的一个需求,但是真正自己写一个却不简单。

1. 查找“=”字符,然后截取后面的?
2. split("="),然后去第二个
3. ……

不到 10 行代码就写完了。

第一次分享到微信是正常,把分享出去的页面再次转发分享,页面错误。

因为微信会在 URL 后面添加一些额外的参数,同样,不同的平台都会有不同形式的添加参数方式,有的加 &,有的加 #,不论加什么都会导致解析的失败。

归根结底是我们写的解析函数有 bug,我们重新造了一个有 bug 的轮子。

解决方式就是:

npm i qs

麻雀虽小,五脏俱全。看看 github 源码,“百行代码,千行测试”。绝对比自己写的代码靠谱。这一百行代码很容易写出来,但是作者为了保证这一百行代码没有 bug 而写了几千行的测试代码。这样的库我们才用着安心。

我写这篇文章不是为了推荐这个 qs 库,而是告诉大家不要重复造轮子用在生产环境,平时大家多造轮子用来学习。



  

相关话题

  有没有一段代码,让你为人类的智慧击节叫好? 
  美国有哪些值得推荐入职的互联网公司? 
  参加ICPC国际编程竞赛的大学生到底有多厉害,在校生该如何准备? 
  为什么很多人都说 Python 简单? 
  java程序员的技术更新那么快,为什么每个技术还要读源码,会使用不就好了吗?技术那么多也学不完啊? 
  程序员是去大厂加班好还是在小公司天天摸鱼打卡下班好? 
  那些把公司当家的程序员,后来怎么样了? 
  为什么现在招聘程序员大多要求 Java / C / C++ 技能,而 C# / .NET 不受青睐? 
  GCC 4 编译警告:warning: dereferencing type-punned pointer will break strict-aliasing rules 有什么比较好的解决办法? 
  有哪些好笑的关于程序员的笑话? 

前一个讨论
聪明人会希望所有人都是聪明人吗?
下一个讨论
被家长逼学编程,虽然知道这个东西不错,但就是十分厌恶,怎么办?





© 2024-12-23 - tinynew.org. All Rights Reserved.
© 2024-12-23 - tinynew.org. 保留所有权利