关于真正的C / C ++代码的优秀示例的建议

我想研究一些好的C / C ++代码。 代码应该:

  1. 在风格和结构上都很好,展示最佳实践
  2. 是一个真实的生活计划(不是一个例子或玩具)
  3. 不是太大,所以分析它不需要很长时间
  4. Windows和/或Unix

我知道那里有1000多个开源项目。 但我想听听你的建议。

我是Java程序员,我很好奇c / c ++中的好项目结构(文件),类/函数/文件的粒度,文档/注释,构建工具等。

欢迎多个建议,例如这是一个很好的Windows示例,即良好的纯C等。

我会特别提到memcached。 这是一个很简单,可读性很好的代码的明显例子。

其次,我会推荐Apache Web服务器 。 这是一个运行良好的开源项目,您将从语言,通用设计实践和网络/线程中学到很多东西。

我投票给nginx: http : //sysoev.ru/en/作为一个非常好的C编程风格的例子

Samba :一个大型,跨平台(基于POSIX),纯C,非常流行的网络服务器。

Samba有很好的开发人员文档 ,代码库本身组织很好; 我已经没有任何问题潜入代码中的任何位置来回答我对其内部工作的问题或追踪错误。

谷歌的Chromium非常庞大,但您无需分析它以欣赏其干净,经过同行评审的结构。 此外,它是很好地完成开发人员环境部署的一个很好的例子。

我发现Lua的实现是相当不错的C源码。 但语言作为示例项目有点奇怪。

Diomidis Spinellis在其着作“Code Reading:The Open Source Perspective”,Addison Wesley,2003中有一些建议。国际标准书号0-201-79940-5。

也许这本书可能对你有用。

urlhttp://www.spinellis.gr/codereading/

这是relayd的主文件 ,它是一个处理负载平衡和故障转移的守护进程。 它写得很好,function齐全,干净的C代码。 它足够大,你可以感受到一个“真实世界”的程序,但不是那么大,以至于你无法通过一些工作来理解它。 非常适合安全,编写良好的网络代码,守护进程等。

除了谦虚之外,还有一个我帮助过的X 平铺窗口管理器 。 它很小,但它是一个真正的wm,其他编码器有很高的标准(并把我带到他们身上!)…很适合学习基本的X东西。

K&R有许多真实程序的好例子。 例如,在第二版的第115页上,有两个简单的echo命令实现。 从那里开始,看看命令如何随着时间推移实现可能会很有趣。 例如, GNU coreutils源中有一个版本。 可以在BusyBox源中找到从BSD派生的版本。

看看新版本与教科书示例的比较可能会很有趣。 为什么现实生活中使用的程序更长? 有多少代码与新function有关,与处理边缘情况有多大关系? 你会如何用Java编写相同的代码?

你肯定需要在C或C ++之间进行选择。 明显的例子:错误管理的良好实践差异很大。

至于C ++,我会向您推荐Qt库 源代码和KDE的源代码及其程序。

它是编写精美的代码以及您应该用C ++编写的方式。

更多C ++建议: “现代c ++”的例子在行动?