it-swarm.cn

您在哪里可以阅读良好的源代码示例?

我听到一些人说,提高您的编码能力的最好方法之一是阅读并理解其他代码。作为一个相对较新的程序员,我的问题是,我应该去哪里找到不太麻烦的好的源代码示例?

53
Jesse McCulloch

您可以在 GitHubCodeplexGoogle CodeBitBucket 等存储库站点上浏览开源项目。您将找到不同复杂度级别的项目,因此您应该能够找到既使您感兴趣又不会让您费解太多的事情。

另一种选择是Scott Hanselman的 每周源代码 博客文章。

我建议从一个已建立的活动项目开始,以降低开始读取尚未通过使用和审查的代码的几率。理想情况下,找到您感兴趣并且可以使用的东西。使用该应用程序将帮助您了解源代码。选择一个开源项目的另一个好处是,您可以提供一些修复程序或功能,这将有助于使阅读代码更加有趣。

盯着其他人的代码可能会令人生畏,所以从main函数(或等效函数)开始,然后逐步进行。

30
Adam Lear

很少有人会在第一次尝试时就编写出色的源代码。好的源代码通常是由一系列修订产生的。因此,如果您可以找到经过多次同行评审并经过多次修复的源代码,那么您可能会处在更好的位置。对某些开源项目(以及其中的某些部分)进行了特别仔细的审查。来自具有强制审核周期的公司(例如Google,但还有很多其他公司)的代码可能很合适。

话虽这么说,我不确定您的目标应该是找到“伟大的代码”。应该是查看不同样式的代码(例如,您的同事编写的代码),并学习确定有关代码的优缺点。您发现的坏点越多,您就越会努力使代码变得更好并知道如何做。

特别是,我相信获得良好代码感的一种非常好的方法是使用交互式调试器按照调用链来跟踪复杂的代码。例如,转到公司的主文件之一,放置一个断点,然后从文件中找出问题。

几次后,您就会对带有十个缩进级别和对全局变量的依赖性的100行函数感到迷惑,并且几次通过分解良好的代码感到不舒服,您将改善自己的编程。

10
Uri

而不是查找出色的代码,而是去看General Programming Books。

例如代码完成,编写可靠的代码,设计模式(我相信本网站的其他问答中还有很多其他书籍)

这些书描述了被认为是好的代码的哲学。可读性,性能,可维护性,错误检测等.

与试图弄清楚作者试图实现的目标相比,这提供了更好的资源和效率。

P.s.好的软件设计也是您应该关注的。鉴于项目足够大,仅凭观察代码很难识别。

4
Zekta Chan

我发现,您选择的编程语言随附的库代码通常是了解最佳实践和良好编码风格的良好起点。

尽管您不想从排序算法或复杂容器类之类的地方开始。

编写代码的有趣见解的另一个地方是Project Euler( http://projecteuler.net/ )。那里的弱点:您必须首先解决问题,才能进入其他人张贴其解决方案的论坛(所有经验水平的有趣挑战)。但是一旦完成,您将找到几乎所有主要编程语言的示例。既然您已经解决了问题,它将帮助您理解其他人的代码。此外,您还可以看到尚不了解但可能会很有趣的语言代码。

3
thorsten müller

我真的很喜欢阅读 Beautiful Code 。它有简短但非常不错的代码示例,并带有详细说明。

...领先的计算机科学家提供了案例研究,揭示了他们如何找到与众不同的,精心设计的解决方案来应对备受瞩目的项目。您将可以在主要的编码和设计专家的肩膀上看到,通过他们的眼睛看问题。

...作者在研究项目的体系结构时会大声思考,在项目构建过程中要进行权衡,以及何时打破规则很重要。

这本书包含33章,由Brian Kernighan,KarlFogel,Jon Bentley,Tim Bray,Elliotte Rusty Harold,Michael Feathers,Alberto Savoia,Charles Petzold,Douglas Crockford,Henry S.Warren,Jr.,Ashish Gulhati,Lincoln Stein,Jim Kent贡献,Jack Dongarra和PiotrLuszczek,Adam Kolawa,Greg Kroah-Hartman,Diomidis Spinellis,AndrewKuchling,Travis E.Oliphant,Ronald Mak,Rogerio Atem de Carvalho和Rafael Monnerat,Bryan Cantrill,Jeff Dean和Sanjay Ghemawat,SimonPeyb Jones,奥特(Otte)和道格拉斯·施密特(Douglas C. Schmidt),安德鲁·帕特泽(AndrewPatzer),安德烈亚斯·泽勒(Andreas Zeller),松本行弘(Yukihiro Matsumoto),阿伦·梅塔(Arun Mehta),电视拉曼,劳拉·温格德(Laura Wingerd)和克里斯托弗·塞瓦尔德(Christopher Seiwald)以及布莱恩·海斯(Brian Hayes)...

3
pyvi