談談自己造輪子

2021-06-21 21:01:40 字數 1111 閱讀 3834

寫下這篇文章,主要是對我近段時間工作的反思。

對於一些程式設計師來說,喜歡自己造輪子可算是乙個很平常的事情,我想可能有如下原因:

我不覺得造輪子不好,曾今很長一段時間我都認為造輪子是體現自己能力很好的一種方式,但是現在越來越覺得,不要過分的去造輪子。

昨天,我需要對接amazon s3的儲存,官方沒有go語言的sdk,所以我就動了自己寫乙個的想法,即使我知道鐵定有第三方的實現。

amazon s3的介面因為都是restful形式,同時簽名機制已經非常熟悉(國內的儲存服務介面幾乎都按照這套設計的,除了幾個奇葩的公司),所以我就開始寫了,寫完了之後,我在看乙個第三方的goamz實現,發現跟我相差不了多少,一下子碉堡了。

我真的叫做沒屁事了,這麼浪費時間。

很多時候,我們要克服自己造輪子的衝動。

對於乙個需要實現的功能,我覺得首先可以考慮該需求是否有成熟的解決方案,如果有,使用的成本有多大?

譬如對於python來說,如果我們現在需要一套web框架,如果自己去寫,而不用成熟的tornado,django這些的,我真覺得蛋疼了。而對於go來說,我到現在還沒發現我們用起來趁手的web框架,所以就有了自己造的polaris。

如果專案進度有壓力,多數時候我都傾向於通過整合外部解決方案來實現,而不是費時的自己去造輪子,因為這時候體現你能力的不是你寫了多少nb的東西,而是將程式執行起來,提供服務。當然,你也不能找太挫的,或者完全無法駕馭的程式,那樣後面就夠你疼了。

即使真的需要自己去寫乙個輪子,還需要不停的問自己:我這個輪子穩定性如何,能否高效的執行,後續隨著需求的變更我能不能很容易的掌控?如果發現自己搞不定,還是求助一下別人比較好。

如果我對某乙個知識點特別有興趣,想去深入研究並且有時間,那我覺得自己造幾個輪子也算是很不錯的事情。譬如我前段時間想重新深入了解網路程式設計,雖然有libev這些好用的開源庫,我也基於他們封裝了很多東西,譬如tnet,tpush,但是我仍然自己寫了乙個libtnet,寫完了,我才有「啊哈,原來是這樣「這種豁然開朗的感覺。

隨著現在github這類**的流行,找到高質量的第三方實現已經變成一件很容易的事情,作為乙個程式設計師,不能固步自封,總認為我自己寫的才是好的,有時候「自己動手,豐衣足食」這種想法反而會累死自己。

今天剛好看到了一篇文章一位碼農的幾點思考,裡面的觀點我很贊同,與大家共勉。

該不該造自己的輪子?

你在學習和寫 的過程中一定聽過這個說法 不要重複造輪子,使用現成的類庫就好。一般知名的類庫都是大公司開發並維護的,正確性與效能都 自己再重新開發乙個相同功能的類庫,消耗時間 消耗精力 大概率做的還不如別人做的好。我平時寫文章時,也經常會遇到好的專欄與書籍,感覺已經有這麼多 這麼好的資料,這些就是好的...

造輪子之我見

味,因為自己就是那一小撮喜歡造輪子的人!自己錯了,錯在哪呢?浪費時間?那麼很快的把事做完了,再做點啥呢!自己是個人英雄主義麼。想出頭麼,想要更多的公升職,加薪 麼,想要譁眾取寵麼!困惑,苦悶,壓力,壓抑,接踵而來。今天看了篇文章 似乎不光自己由此困惑,很多人或者說很多想要做輪子或者 正在造輪子的人 ...

C語言造輪子

double 數轉 uint64 t 四捨五入法 vs 中線程安全函式 sprintf sprintf s strtok strtok s gcc 中線程安全函式 strtok strtok r uint64 t doubletoull double a char p null,pp null ui...