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


53

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


这已被要求在计算器上:stackoverflow.com/questions/3083525/...
nikie

3
我只是回顾一下我的旧代码。
保罗

保罗,那不是对OP有帮助吗?显然,他们过去没有编写好的代码。esh。
junky

2
@junky希望他们虽然有些幽默:)
Konrad Morawski 2012年

这是我要问的问题,但是我发现它是我的好运。我认为这只是我的问题,我不知道在哪里找到代码
Dhananjay 2012年

Answers:


30

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

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

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

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


3
-1:初学者无法区分代码的好坏,因此“浏览”项目无济于事。您可以通过推荐“已建立”的项目来解决这个问题,但是我在大家都听说过的项目中看到过糟糕的代码。不过,我没有更好的答案。这实际上是一个难题,需要根据个人的技能水平,兴趣量身定制的答案,并通过指导者的知识进行过滤。
2012年

1
@Cris我不同意,但我会指出,阅读错误代码也有很多要学习的内容。可以说,阅读和遵循错误的代码比进入一个组织良好的项目还要困难。(而且这是在我们试图弄清楚什么是“好的”代码之前。:))
亚当·李尔

1
足够真实。但是对于我们大多数非天才人士而言,自我教育是有局限性的。大多数初学者(在所有领域中)都需要接触“好”东西,以了解什么好东西。而且“互联网”是“我很好!”的世界名声,但这无济于事。
2012年

10

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

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

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

几次后,您就会对具有十个缩进级别和对全局变量的依赖的100行函数感到迷惑,并且几次通过分解良好的代码轻而易举地改善了自己的编程。


4

与其寻找出色的代码,不如查看General Programming Books。

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

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

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

Ps好的软件设计也是您应该研究的。鉴于项目足够大,仅凭观察代码很难识别。


1
我想提到“清洁代码”作为一个很好的资源。
mhr

3

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

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

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


3

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

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

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

这本书包含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.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.