首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为一名初级程序员,我是否应该倾向于构建自己的库而不是使用第三方库?

作为一名初级程序员,我是否应该倾向于构建自己的库而不是使用第三方库?
EN

Software Engineering用户
提问于 2011-04-28 23:07:20
回答 5查看 2.3K关注 0票数 12

作为Python程序员的开端,在跳转到包含我所需功能的高级第三方库之前,构建和理解我自己的库是个好主意吗?

有些项目(例如,像Django这样的web框架)对于这种方法来说可能太大了。但其他项目(例如Web Crawler、图形库、HTML解析器)似乎是可行的。

我担心早期对第三方图书馆的依赖会阻碍我的成长。

注意:这个问题这个问题似乎更关注经验丰富的程序员,他们可能更关注重用的效率,而不是学习的好处。我想,我的问题集中在初学者身上。

EN

回答 5

Software Engineering用户

回答已采纳

发布于 2011-04-28 23:28:04

这永远是一种交换。

作为一个初级程序员,在考虑重用代码与重新发明方向盘时,您应该问自己两个问题:

  1. 我是否会通过从头开始写所有东西,或者专注于问题域,抛开对我感兴趣的问题不重要的复杂性,来更多地了解我想解决的问题?
  2. 对我来说,解决眼前的问题更重要,还是更重要的是理解一些基本的概念?

如果你不需要完成你的项目,就可以在其他人已经解决的复杂问题上旋转一下,因为你会学到一些东西。但在你“完成”之前,你可能会继续做其他的事情,这对你来说可能重要,也可能不重要。当你在一个看上去很简单的复杂领域中,当你开始尝试自己解决它时,其他的项目就会看上去闪闪发亮。

不要因为你顺从别人的想法而放弃控制,而是更多地关注你想要完成的事情。

如果您的目标是编写HTML解析器,因为您想了解解析器是如何工作的,那么就去编写它。如果您的目标是编写HTML解析器,因为您希望清理用户输入或转换一些随机的HTML比特,那么您可能关注的是错误的东西,因为您可能更感兴趣的是解析的应用程序,而不是解析本身。如果您想编写HTML解析器,因为您不想花时间来理解其他人的库,那么您可能在浪费时间,因为,至少在本例中,我保证其他人花了更多的时间研究如何有效地解决这个问题。在非常简单的情况下,您可以通过不重用代码来节省时间,但是在复杂的代码中,除非您使用的库很糟糕,或者您阅读文档和代码示例的能力很差,否则您只会浪费时间。

另一方面,我想说写你自己的图库是值得的,因为你将更多地关注可转移的、基本的算法和数据结构,这些算法和数据结构可以应用到其他领域,即使你在处理这些问题时最终使用了别人的库。

票数 12
EN

Software Engineering用户

发布于 2011-04-29 00:10:08

大多数刚开始的程序员都大大低估了问题的复杂性。这会导致许多令人不快的情况,但我将只关注一个:他们会因为“臃肿”或“太复杂”而忽略了许多第三方库。然后,他们试图编写自己的代码来做同样的工作,并把它弄得一团糟,因为他们没有预料到他们必须处理的所有事情。

以web爬行和解析HTML为例。你对这些任务的态度似乎很随意--这让我相信,你从来没有尝试过在很小的范围内去做这些事情。这里只是一个简短的、不全面的清单,列出了一个真正的网络爬虫需要解决的潜在问题:

  • 格式错误的HTML
  • 多字符编码(整个世界不运行在ASCII上)。
  • 由JavaScript生成或修改的链接。
  • 链接到多千兆字节二进制文件。
  • 不正确的哑剧类型。
  • 在爬行过程中崩溃。
  • 焦油坑。
  • SEO顾问。
  • 微软。
票数 8
EN

Software Engineering用户

发布于 2011-04-28 23:34:39

我担心早期对第三方库的依赖会阻碍我的成长,使我成为一个图书馆的集成商,而不是一个程序员。

那是假的。

早期对第三方图书馆的依赖将告诉我们图书馆是如何运作的。

过早的发展总是浪费时间。在不仔细研究(即使用)现有图书馆的情况下编写自己的图书馆,注定你会在职业生涯中重新发明车轮--糟糕的是--。

我花了好几个小时来清理这些烂摊子。

票数 6
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/72259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档