发布于 2011-04-28 23:28:04
这永远是一种交换。
作为一个初级程序员,在考虑重用代码与重新发明方向盘时,您应该问自己两个问题:
如果你不需要完成你的项目,就可以在其他人已经解决的复杂问题上旋转一下,因为你会学到一些东西。但在你“完成”之前,你可能会继续做其他的事情,这对你来说可能重要,也可能不重要。当你在一个看上去很简单的复杂领域中,当你开始尝试自己解决它时,其他的项目就会看上去闪闪发亮。
不要因为你顺从别人的想法而放弃控制,而是更多地关注你想要完成的事情。
如果您的目标是编写HTML解析器,因为您想了解解析器是如何工作的,那么就去编写它。如果您的目标是编写HTML解析器,因为您希望清理用户输入或转换一些随机的HTML比特,那么您可能关注的是错误的东西,因为您可能更感兴趣的是解析的应用程序,而不是解析本身。如果您想编写HTML解析器,因为您不想花时间来理解其他人的库,那么您可能在浪费时间,因为,至少在本例中,我保证其他人花了更多的时间研究如何有效地解决这个问题。在非常简单的情况下,您可以通过不重用代码来节省时间,但是在复杂的代码中,除非您使用的库很糟糕,或者您阅读文档和代码示例的能力很差,否则您只会浪费时间。
另一方面,我想说写你自己的图库是值得的,因为你将更多地关注可转移的、基本的算法和数据结构,这些算法和数据结构可以应用到其他领域,即使你在处理这些问题时最终使用了别人的库。
发布于 2011-04-29 00:10:08
大多数刚开始的程序员都大大低估了问题的复杂性。这会导致许多令人不快的情况,但我将只关注一个:他们会因为“臃肿”或“太复杂”而忽略了许多第三方库。然后,他们试图编写自己的代码来做同样的工作,并把它弄得一团糟,因为他们没有预料到他们必须处理的所有事情。
以web爬行和解析HTML为例。你对这些任务的态度似乎很随意--这让我相信,你从来没有尝试过在很小的范围内去做这些事情。这里只是一个简短的、不全面的清单,列出了一个真正的网络爬虫需要解决的潜在问题:
发布于 2011-04-28 23:34:39
我担心早期对第三方库的依赖会阻碍我的成长,使我成为一个图书馆的集成商,而不是一个程序员。
那是假的。
早期对第三方图书馆的依赖将告诉我们图书馆是如何运作的。
过早的发展总是浪费时间。在不仔细研究(即使用)现有图书馆的情况下编写自己的图书馆,注定你会在职业生涯中重新发明车轮--糟糕的是--。
我花了好几个小时来清理这些烂摊子。
https://softwareengineering.stackexchange.com/questions/72259
复制相似问题