[翻譯] 啥時找 library?啥時自幹?
blog 版:http://blog.dontcareabout.us/2015/02/library.html
BBS 版以 markdown 語法撰寫
原文網址:http://games.greggman.com/game/
when-to-find-a-library-vs-when-to-write-code/
譯註:我幾乎完全不認同這篇的說法,
更不用說 [HappyFunTimes] 也是一個 library [大笑]。
只是拿來恢復一下翻譯的感覺...
身為一個 C / C++ 碼農,除非是很大的 project,不然我很少找 library。
舉例來說,如果我需要讀 BMP / TGA 檔,帳面上要寫的程式碼不到 100 行。
看一下資料格式、寫一些程式、打完收工。
要是我需要載入 JPG / PNG 這些格式異常複雜的檔案,
我終究會去找一個 library。
我現在寫 JavaScript 就不太一樣,
在 JavaScript 的世界中有數以萬計[針對各種狀況的小型 library][1],
讓我不知道該自幹程式還是找找看有沒有 library。
這常常讓我覺得很浪費時間。
例如我要有一個非常簡單的功能:把字串裡頭的關鍵字換掉:
replaceParams("Hello %(name)s", {name: "World"});
// produces:
// Hello World
後來為了可以這樣搞,所以拓展到 20 行:
replaceParams(
"Hello %(name)s from %(user.country)s",
{
name: "Joe",
user: {
country:"USA",
},
});
// produces:
// Hello Joe from USA
最近我希望可以用路徑插入其他檔案,像這樣:
replaceParams("->%(insertfile: foo/bar/moo.txt)s<-");
如果 `moo.txt` 裡頭是 `this-and-that`,結果會是:
-->this-and-that<--
只需要幾分鐘的時間就可以加這個功能,
但是... JavaScript 中的 template 系統超級多,
我建一個 template 很快。
也許我應該去用那些 template 系統而不是重新再造輪。
那麼,第一個問題是:要用哪一個?
我聽過 mustache、handlebars、jade、ejs......
為什麼要選 A 而不選 B?
我花了大概 20 分鐘搜尋、試圖比較... 來讓我知道哪一個比較優秀。
我看到「ejs = 嵌入 JS」看起來很像 PHP;
我看到 handlebars 是以 mustache 為基礎但是快了很多。
我決定用 handlebars、花了大概 20 分鐘來改程式碼,
它輸出相同的結果,一切看起來很棒。
然後我試著加上我那個 `insertfile` 指令,
靠夭,炸了 AFAICT,除了關鍵字以外都沒辦法傳進 template 中。
現在已經過了一小時了,誰能告訴我為什麼我要再作一次這件事情?
這就是為什麼寫這篇文章《啥時找 library?啥時自幹?》。
當然,在這個例子中,
如果我不去找 library 就可能只會花掉我 5~10 分鐘。
我選用的 library 有一些功能,像是可以擴展功能...
自幹版當然也可以加功能。
另外它可以選擇要不要轉換跳脫字元,
自幹版當然也可以有這個功能。
我其實沒有答案......
我知道的是... 找 library 讓我覺得分心、浪費時間。
前頭我很誇張地描述許多我下載的熱門 library 證實是爛掉的,
時間都花在找尋、設定跟測試。
相對地,也有人告訴我應該使用更多 library。
像最近在 [HappyFunTimes] 就有人說我應該用 [body-parser]
來自動分析 JSON 而不是自己處理。
我的程式有 5... 也許 10 行,但是 body-parser 有 2000 行。
好啦好啦,它能處理一堆 case,
但是這些 case 在 HappyFunTimes 幾乎都不會遇到。
我試了 body-parser
結果發現它也沒有處理我沒法處理的錯誤。
如果我能解決這些錯誤,在網路上找答案是不會解決的,
只會找到誰也遇到這個問題而且一樣沒辦法解決。
我想用 library,因為我會假設他們處理一些我不知道的特殊狀況。
不過它們搞出來的麻煩往往多過它們的價值。
[1]: http://npmjs.org/
[HappyFunTimes]: http://greggman.github.io/HappyFunTimes/
[body-parser]: https://www.npmjs.com/package/body-parser
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.37.88.218
※ 文章網址: https://www.ptt.cc/bbs/Translate-CS/M.1425017911.A.F3A.html
推
03/01 00:55, , 1F
03/01 00:55, 1F
Translate-CS 近期熱門文章
PTT數位生活區 即時熱門文章