2009-03-03 74 views
3

如何研究开源库代码,特别是标准库?代码库通常很庞大,很难浏览。如何找到一些函数或类的定义?学习标准库源代码

我是否通过下载的源文件进行搜索? 我需要cvs/svn吗? 也许网络搜索? 我应该知道标准库的结构吗? 有没有参考? 还是做一些IDE有这样的功能?还是其他一些工具? 如何在没有人的情况下有效地做到这一点? 在任何开源库中做这件事的最佳做法是什么? 在Linux/Unix系统上如何操作资源是否有任何约定? 特定编程语言有什么区别?

大力推荐该主题的广泛介绍。 我标记这个'社区维基',所以每个人都可以重新修改和扩大我的尴尬表述!

更新:可能没有足够清楚地表达问题。我想要的只是查看某些特定库类或函数的源代码。而问题主要是关于工作组织和可用性 - 我如何在大量资源中导航以找到问题,或许有特定的工具或方法?感觉就像应该长期存在一些解决方案。

回答

0

嗯,我认为,只是站点下载并阅读库的代码是疯狂的。我的方法是每当我遇到需要我自己实现某些东西的时候搜索,然后研究它在这些库中实现的方式。

而且还有很多优秀文档的项目/库,我发现比代码更重要。在基于Unix的系统中,您经常会在手册页中找到有价值的信息。

1

需要注意的一件事是,标准库有时(经常被?)优化,而不适合大多数生产代码。

因为它们被广泛使用,它们必须在各种各样的条件下表现良好,并且可能充满了对于角落案例的巧妙技巧和特殊逻辑。

也许他们不是作为初学者学习最好的东西。

只是一个想法。

0

哇,这是一个很大的问题。

简而言之:这取决于。

长答案: 一些图书馆提供文献,而另一些图书馆提供文献,而其他图书馆没有。标准库通常都有很好的文档记录,无论您选择的库的实现是否包含文档。例如,您可能已经找到了没有文档的c标准库的实现,但是c标准已经存在了很长时间,以至于有数百种可用的良好参考书。带有超链接的文档是学习新API的非常有用的方法。在任何情况下,我会看到的第一个地方是图书馆的主要网站

对于较少知名的库缺乏文档,我发现两种不同的方法非常有帮助。

首先是文档生成器。几乎我所知道的每种语言都有一种。它基本上解析一个源代码树并创建可用于学习库的文档(通常为html或xml)。有些人在代码中使用特殊格式的注释来创建更完整的文档。 JavaDoc就是一个很好的例子。很多其他语言的Doc生成器从JavaDoc中借用。

第二个带有类浏览器的IDE。这些起到一种即时文档的作用。有些只显示图书馆的界面。其他的包括来自图书馆来源的描述评论。

这两个都需要访问库的源代码(如果你打算真正使用库,它会派上用场)。

许多这些工具和技术对于封闭/专有库同样适用。

0

标准Java库的源代码可用。对于一个初学Java程序员来说,这些可以是一个很好的阅读。特别是Collections框架是一个很好的开始。以ArrayList的实现为例,并学习如何在Java中实现可调整大小的数组。大多数来源甚至提供有用的意见。

要阅读的最好的部分可能是其目的,你可以立即理解。从容易的部分开始,并尝试按照您从自己的代码中进行的单一调用隐藏的所有步骤。

0

我的东西从时间做对的时候:

apt-get source foo 

然后新的C++项目(或其他)在Eclipse和进口。

=>哇! Browsable! (使用F3)