你在學習和寫**的過程中一定聽過這個說法:不要重複造輪子,使用現成的類庫就好。
一般知名的類庫都是大公司開發並維護的,正確性與效能都***。自己再重新開發乙個相同功能的類庫,消耗時間、消耗精力、大概率做的還不如別人做的好。
我平時寫文章時,也經常會遇到好的專欄與書籍,感覺已經有這麼多、這麼好的資料,這些就是好的輪子,沒必要自己再寫乙個專欄了。無奈,內心總希望記錄點什麼,所以隱隱約約挺糾結這事。
一直以來都覺得,不重複創造輪子這個觀點沒毛病,從我的「不重複造輪子」系列總結就能看出;但作為程式設計師,依然對創造出屬於自己的輪子有著強烈的渴望,那種成就感是無與倫比的美。
在種種糾結中,想明白了這事:有能力,必須創造自己的輪子。
為什麼這麼說呢?
首先,不親自去造個輪子,就沒法進步。
不自己去著手試試造個輪子,寫個類庫,怎麼知道為什麼自己寫不出來?怎麼知道與"優秀"相差多遠?自己先來乙個,哪怕第一版都搞不出來,但往往是硬著頭皮做下去,漸漸會發現可以看懂優秀的作品為什麼優秀,曾經的遙不可及也不再是無法達到。
不建議你自己去造輪子,就是覺得你能力不夠,而恰恰能力就是在一次次嘗試和失敗中鍛鍊出來的。停止嘗試,也就停止了進步。
其次,如果沒有自己的輪子,恐怕將會無路可走!
美國禁止華為高階晶元的採購、hashicorp 不允許中國境內安裝和部署名下的開源軟體(其中包括 consul-微服務註冊發現配置中心)等事件足以說明,沒有自己的輪子可能被會被掐死。
我們也可以反過來思考一下,那些看起來優秀的輪子就真的是最合適嗎?
舉個簡單的例子,jdk 中的 arraylist 經常使用,再熟悉不過了吧?如果業務場景使用 arraylist 第一次只需要儲存 3 個元素,第二次需要存入 10 萬個元素,那 arraylist 預設的擴容機制還合理嗎?
有界佇列 disruptor 為什麼比 arrayblockingqueue 效能高?它為什麼不使用陣列,而是建立了自己的輪子-ringbuffer。
追求極致效能的資料庫連線池 hikaricp,它為什麼沒用 arraylist?而是建立了自己的輪子-fastlist。
世上就沒有一樣的輪子,最合適自己的,一定是出自自己的手筆,除非願意將就。
談談自己造輪子
寫下這篇文章,主要是對我近段時間工作的反思。對於一些程式設計師來說,喜歡自己造輪子可算是乙個很平常的事情,我想可能有如下原因 我不覺得造輪子不好,曾今很長一段時間我都認為造輪子是體現自己能力很好的一種方式,但是現在越來越覺得,不要過分的去造輪子。昨天,我需要對接amazon s3的儲存,官方沒有go...
前端值得造的輪子
ui 輪子 輪播 tab 懶載入 照著餓了麼ui庫 bootstrap 挨個實現就好。做這種輪子比較考驗 css 功力,你需要用盡量少的 適應盡量多的場景。流行 ui 模式的實現瀑布流 視差滾動 fullpage等。原理簡單又炫酷,何樂不為。dom 操作的輪子 實現得最好的當然就是 jquery。由...
結合自己造的輪子實踐按需載入
為了 按需載入的本質,選擇了對先前造的輪子 diana 進行實驗。實驗一 全量引用 import as from diana 打包體積結果如下 測試的是 diana 0.4.1 實驗二 部分引用import from diana 打包體積結果如下 經過測試,發現兩種方式打包後的體積都為 21 k,第...