0. 为什么要阅读开源代码阅读 Python 开源项目代码主要有如下三个原因:
1. 要有目的的阅读开源项目没有目的的阅读开源项目就是耍流氓,浪费了时间,但是能学到的东西也很少。怎么样根据自身情况去阅读呢?
2. 优秀的开源作者和工作中看别人代码差不多,基本每个人、每个项目、每个团队都有自己写代码的风格,比如变量命名风格、某些语言特性使用方式、代码规范要求、目录风格等,其实开源项目的作者也是一样。看代码,如看人「团队」
前 2 个是公认的 Python 领域代码写的最好的、最有创意的工程师。 3. 初学者推荐阅读项目初学者可以先阅读一些代码量比较少的,最好是单文件的项目:
(https://github.com/heroku-python/pip-pop)
(https://github.com/not-kennethreitz/envoy)
(https://github.com/kennethreitz/records)
(https://github.com/mitsuhiko/pluginbase)
(https://github.com/mitsuhiko/pipsi/)
(https://github.com/mitsuhiko/unp)
(https://github.com/chrisallenlane/cheat/)
(https://github.com/jek/blinker) 看代码主要是了解别人写代码的方式,语法实践这些内容。看完之后,你可以针对这些项目能解决的问题自己写个项目,写完之后和上述项目去对比一下,看看哪些方面做的不好。 4. 进阶阅读项目进阶的时候就要阅读一些相对复杂的项目,它们能帮助你提升 Python 编程技巧:
除此之外 Web 开发者可以阅读一些相关的项目:
5. 500 Lines推荐一个非常厉害的项目 GitHub - aosabook/500lines(https://github.com/aosabook/500lines): 500 Lines or Less, 它里面包含了 22 个由该领域的专家完成,用不到 500 行的代码实现一个特定功能的子项目。连 Guido van Rossum 都亲自来写基于 asyncio 爬虫了,Nick Coghlan、ajdavis 也出场了。 不要畏惧大家都经常会感叹 XXX 强大,YYY 流行,无形中你会把它放在一个不可触及到的地位,感觉它很难,而令自己不敢去挑战它。其实是人就会产出 bug,假如你发现它有问题,就应该抓住机会去验证它。这个过程中,它的神秘感也就消失了,有过这么几次经验你就有信心了。其次是不要怕你提交的 PR 被拒绝。这是非常正常的,我有很多 PR 是被拒绝的,尤其是给标准库提交的 Patch,绝大多数都被拒绝了。 带着问题去阅读代码这也是我认为最有效的方式。这会让你在阅读时候有个主线,比较有针对性。 断点调试在 Python 代码中使用 pdb 一般不太好使,因为代码复杂的话,这种断点需要你使用多个 N 跳到对应的位置,我一般都是先抛出异常,然后使用 pdb 的 善用文档阅读一个项目一开始会有点无从下手,那么就先好好这些内容,它们一般都是作者表达这个项目的第一个入口。quickstart、tutorial 等内容中的最小化的例子其实就是最好的阅读入口,先去看这些引用的模块和调用的对应方法或者函数的对应实现,从下至上去阅读。 理解作者的思考方式不同的项目要有不同的思考方式来阅读,不要拧着自己的习惯去阅读,这样会很累,得尝试接受别人的观点,甚至于改变自己。 阅读项目的早期版本一些项目随着时间演进已经非常复杂了,读起来有难度,那么你可以回到项目的早期版本上,先去看相对简单地版本,然后设置几个时间点或者版本节点,渐进的来阅读。 记忆并绘制项目架构项目就是一堆代码的组合,除了学习编程技巧,还要了解项目的架构决策,这对于未来自己写大型项目非常用用。这种理解越补充,你会对它就越来越清晰。 |
|