作者PsMonkey (痞子军团团长)
看板Translate-CS
标题[翻译] 啥时找 library?啥时自干?
时间Fri Feb 27 14:18:26 2015
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://webptt.com/cn.aspx?n=bbs/Translate-CS/M.1425017911.A.F3A.html
1F:推 AmosYang: markdown is dead. long live commonmark :D 03/01 00:55