很多人不理解 NPM 上 left-pad 这样的模块的意义

2016-03-24 09:48:23 +08:00
 sox
给那些也许还不理解 one-line module 意义的人

https://github.com/sindresorhus/ama/issues/10
11755 次点击
所在节点    Node.js
75 条回复
chimingphang
2016-03-24 10:16:58 +08:00
看完还是不太懂
qiayue
2016-03-24 10:17:38 +08:00
谁简单翻译一下重点?
Livid
2016-03-24 10:21:20 +08:00
如果大量的基础函数可以通过外部依赖解决,那么自己的程序的代码行数就可以减少很多,程序员可以专注于发明一些新的不同的东西。

当然,这只是一种假设的、部分实现了的理想情况。
fds
2016-03-24 10:26:33 +08:00
没看太懂。不过之前用过一个库,用来去除字符串中包含颜色信息的特殊字符的,实际上就是一行正则匹配,但是自己写的可能有遗漏,用库的话还有人维护,何乐而不为。
zhujinliang
2016-03-24 10:27:03 +08:00
我还是不大理解 left-pad
如 x === 0 && 1 / x === -Infinity 这种行数虽少,但信息量不小,或者包含了大量经验及测试的我没意见
left-pad 的这种,不应该是张嘴吃饭伸手穿衣一样,随手就写的么,难以想象一个写软件的人,尤其是维护这么大的项目的人,不知道如何 pad 一个 string
ncwgf
2016-03-24 10:28:31 +08:00
大概是
你可以專注如何使用小齒輪
理想情況下其他用戶可協助優化
假若小齒輪有一天進化了
各個使用了該小齒輪的專案也可以獲得更新
而不需要自己憑記憶去找出來優化
kn007
2016-03-24 10:28:43 +08:00
mark ,支持
shyling
2016-03-24 10:28:57 +08:00
模块化本身就是这样啊。。。难道我知道做饭的步骤就一定要自己做饭嘛?
sox
2016-03-24 10:29:05 +08:00
It doesn't matter if the module is one line or hundreds.

It's all about containing complexity.

Imagine if PC manufacturers all made their own CPUs.

Before Node.js and npm. I had a large database of code snippets I used to copy-paste into projects when I needed it.

Do you make your own shoes? No, you buy them in a store.

I want programming to be easier.
charlie21
2016-03-24 10:30:29 +08:00
redefine 专注
stupidcat
2016-03-24 10:30:39 +08:00
It doesn't matter if the module is one line or hundreds. It's all about containing complexity.
By making small focused modules you can easily build large complex systems without having to know every single detail of how everything works.

用这个模块的人根本不会关心这个模块是一行还是十行还是一千行,只要用就是了,这样就可以把注意力集中到用这些模块构建大型的、复杂的系统中去
Biwood
2016-03-24 10:41:55 +08:00
Do you make your own shoes? No, you buy them in a store. Most don't care how the shoe is made. Just how good it fits.

你会制造自己的鞋子么?不,你只会去商店买鞋子。多数人不关心鞋子是怎么制造的,只关心鞋子合不合脚。
Biwood
2016-03-24 10:43:38 +08:00
就是老程序员们喜欢说的不要重复造轮子吧
crabRunning
2016-03-24 10:43:39 +08:00
补位呗,如果用过 aes 或者 des 加密应该知道
chimingphang
2016-03-24 10:45:45 +08:00
你们都不怕齿轮没了,坏了的情况?
sox
2016-03-24 10:48:06 +08:00
@chimingphang 这有点因噎废食,你担心的话可以指定 package vesion `x.x.x` 而不是 `^x.x.x`
ohhe
2016-03-24 10:48:12 +08:00
怎么看待只有四个螺丝的桌子也要买现成的,不能自己组装吗
怎么看待去饭店吃饭点番茄炒蛋这种行为
sox
2016-03-24 10:48:57 +08:00
@ohhe 螺丝不是你买的吗
janxin
2016-03-24 10:50:54 +08:00
我觉得主要问题是不应该把 one-line code 与单独实现功能的模块直接混淆掉。

如果是实现单一功能,缺少更多的模式变化,其实很多时候没必要拆出来一个单独的包作为功能。

反倒是一类功能的集合作为不同项目适配我觉得更适合模块功能的定义。

否则写代码更多时候只是拼积木,没有任何意义可言。
keyanzhang
2016-03-24 10:51:34 +08:00
我觉得这背后的问题是 node.js 缺少一个优秀的 stdlib 。 TJ 老师也说过这个问题。 https://twitter.com/tjholowaychuk/status/665308077420183553

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/265944

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX