对于初学者来说,最好的C ++源代码是什么?[关闭]


25

我正在尝试通过阅读c ++源代码来改进我的c ++编码技术。您会推荐哪个开源项目?Boost C ++库的代码是否不错?


11
为什么要投票?这个问题是明确而具体的。
Nemanja Trifunovic

STL的实现
dukeofgaming 2012年

12
@dukeofgaming:您忘记了“讽刺”标签。
Doc Brown

1
好吧,我想对于初学者来说,boost源代码并不是一个好主意。您可能会淹没在模板和SFNINAE技术中,但您还不了解它们的工作原理和原因。
克里斯说,恢复莫妮卡(Monica)2012年

7
票数接近是因为这个问题虽然具体,但没有建设性。它只会产生每个人项目的列表,没有一个答案可以是“答案”。有关此背后的更多信息,请查看FAQ
Walter

Answers:


27

我会推荐任何Google的开源C ++代码,例如:

使用Google代码的优势:

  • 它是按照高标准编写的,并且经过同行评审(与某些开源代码不同)。
  • 它具有良好的开发人员文档(这使它更容易掌握和理解)。
  • 它使用了一些中等先进的C ++技术(因此非常适合学习)。
  • 它可能比Boost更容易理解,因为它不那么依赖高级模板元编程和预处理程序元编程,并且不因无数的编译器兼容性黑客和特殊情况而受压。

Google的C ++代码使用的《Google C ++样式指南》通常是不错的选择,但是它确实有一些相当不寻常的地方(例如其某些命名准则或不允许的例外),因此请记住,他们的C ++代码在这些方面与您将在现场看到的内容。


9

我不建议阅读代码库。我建议阅读C ++常见问题解答。网站上还有一本很棒的书。改善C ++编码技能的最佳方法。


13
-1:我非常不同意。阅读别人的代码是提高自己的编码技能的非常重要的一部分。不过,修复该代码中的错误甚至更好。
2012年

6
@Jan与我达成完整协议。但是,大多数C ++源代码都吸收并采用了各种不良模式,这些不良模式会传授不良技术。您是否知道一个好的OSS项目可以作为入门阅读?
Konrad Rudolph 2012年

我指的是这一本书:amazon.com/FAQs-2nd-Marshall-P-Cline/dp/0201309831 / ...但是我现在也可以看到其他书籍。
Onorio Catenacci

6

阅读现有的干净C ++代码是学习该语言的好方法。

例如,OpenFST工具箱中的代码非常干净。它可读性强,并且使用了稍微先进的功能,不会太过复杂。

另一方面,Boost可能有点难以阅读,部分原因是它们使用了难以理解的C ++技巧,并且因为它们经常为不同的编译器版本使用不同的解决方法来增加代码。


6

我建议阅读Scott Meyers 的“ Effective C ++ ”,并使用他在小玩具程序中的建议。


2
你不会从小玩具程序中学到任何东西。您需要编写解决实际问题的程序。它们不必很大,您不会独自编写大型程序,但它们一定不能只是玩具。
Jan Hudec

@JanHudec:您所描述的就是我所说的玩具程序:解决单个问题的一段代码。因此,例如Runge-Kutta算法将是“玩具程序”,而完整的N体模拟则不是。
Sardathrion-恢复莫妮卡2012年

2
这些都是“玩具计划”。因为问题是人为的问题示例,除非您进行数值模拟,而大多数程序员则不这样做。实际问题是您或您认识的某人将要实际使用的东西。它可能将具有GUI或至少相当复杂的命令行解析和操作文件,或者连接到网络并使用一些现有的库,并且不会有任何不平凡的算法,因为那里有99%的程序没有。
Jan Hudec 2012年

1
@JanHudec您是说一个人首先通过处理小而受约束的问题不会学到任何东西吗?如果程序员在没有学习至少一些基本原理和一些基本语言习语的情况下直接跳入大而复杂的问题,那么这就是我们最终得到这些巨大的“泥泞之球”应用程序的方式。
Onorio Catenacci 2012年

3
我不知道这个答案,但每一个C ++程序员都应该读这本书(以及它的续集。)
戈特机器人

2

尝试阅读已经存在多年且体积较大的内容。开始理解代码并在其中进行某些操作将花费几个月的时间。

想到了Firefox,Thunderbird,OpenOffice.org,LibreOffice。也应该有更多类似的东西。这些项目在许多操作系统和硬件平台上运行。此外,他们必须在可读性上得分。这些可以帮助您寻找所需的技术。


0

比阅读代码更好的是,以修复错误并在此处和此处进行小的改进的形式使用该代码。选择一些程序,最好是您使用过的程序,注册到邮件列表,开始浏览其错误跟踪器并尝试诊断一些错误。在邮件列表上询问是否找到合理的解决方案或何时遇到问题。在阅读代码时,这将为您提供一些特定的目标,迫使您真正地理解它,这是您大部分时间将要做的事情。

您也许可以看一下一些KDE应用程序。大多数代码都是用C ++编写的,您可以先从一些较小的代码开始。


-3

是的,Boost C ++库的代码是一个很好的学习资源,即使不是世界上最好的资源之一。但是,对于新手来说,从Boost代码学习可能会使学习曲线变得非常陡峭。如果您真的想阅读Boost,请从Boost.Array之类的一些小型简单库开始


2
我认为这就像是建议学习滑雪的好方法是购买击中双黑色菱形的斜坡。

@StevenBurnap,请再次阅读我的答案,并指出我提出的荒谬建议。请停止学习,并指出一个更好的综合库,值得初学者阅读。您将得出结论,适合初学者的最佳示例来自一本针对初学者的书。
mloskot

-3

尝试阅读C ++ PDF。它是免费的,即使没有其他编程经验,我也从中学到了C ++,而且我只有14岁。


3
您可以添加指向与此项目相关的某些资源的链接吗?
乔治

3
您是什么意思C ++ PDF?
马丁·彼得
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.