我们一直谈论“写代码”,但你会“读代码”吗?

栏目: Python · 发布时间: 6年前

内容简介:编程,又被称作“关于调试 debug,我们在上一篇文章读代码通常有两种原因:

编程,又被称作“ 写代码 ”。这个说法有可能会带来一点点误解,让人觉得如何“写”是学习编程要解决的主要问题。但事实并非如此。尽管最终代码要在键盘上敲出来,但这个过程在开发中的实际时间占比可能要远远小于你的预期。编写之前的 设计 ,编写之后的 调试 ,以及 阅读 他人的代码,这些会花费比“写”更多的时间。

关于调试 debug,我们在上一篇文章 开发5分钟,调试2小时 - 该如何debug? 里已经有所介绍。今天说说另一个事情: 读代码

为什么要读代码

读代码通常有两种原因:

一是 开发过程中不得不去读

二是 为了学习和提升编程能力

真实的开发中,很少有独自开发的项目,大多数项目都是 多人合作开发 ,或多或少都需要阅读别人的代码,了解接口和具体实现等。在软件公司里,你也极有可能 接手其他同事的代码 ,这通常不是个令人愉快的事情,但也得硬着头皮去读。哪怕你跟同事分工明确,耦合度极低,也没有接手“祖传代码”,那也免不了 使用一些第三方库和框架 。当使用中遇到问题而文档和搜索都无法解决的时候,读其源码是必须的。

开发中读代码大多数被动的。出于学习和提升的目的,主动读代码也很有必要。这也是我们今天讨论的重点:

1. 提高编程能力

学习都要从模仿开始做起,不管是入门时候阅读教程里的示例代码,还是进阶阶段阅读优秀项目源码,都是很好的学习方式。否则没有标杆,仅凭自己闷头写,往往事倍功半。

2. 提高 debug 能力

对代码的阅读,本身就是一种能力,是需要练习积累的。只有能看懂代码,你才能快速准确地定位代码中的问题。

3. 良好的代码风格

Python 是一门优美的语言, Readability counts (可读性很重要)是写在 Python 之禅 里的。“开发”不仅要写可以执行的代码,更是 要写别人读得懂的代码 ,这对代码的维护和扩展大有好处。要写出很 pythonic 的代码,少不了阅读优秀的源码。

我们一直谈论“写代码”,但你会“读代码”吗?

4. 交流学习的机会 。阅读别人代码的同时,一定也伴随着和其他开发者的交流讨论,这对一个开发者的成长是很重要的。我们的论坛和答疑群里,有一些同学会查看并解答其他人的代码问题。这个操作不仅是单纯地帮助别人,对自己也是一种的提高。更进一步,你甚至可以通过阅读代码参与到一些 开源项目 ,与高手交流。

如何读代码

既然读代码是有益且必要的,那么该如何读代码呢?这里给几点建议:

1. 有目的的阅读

对于想通过阅读源码提升能力的同学,首先要明确自己的目标是什么。虽然读源码好处多多,但也不是人人都适合。在学习初期,还是应当 以系统学习为主 。否则连基本的语法、数据结构、函数、模块都还不够熟悉,直接看代码只能是一脸懵逼。等到了可以读源码的程度,也要选择 适合难度的代码 ,以及 自己熟悉或感兴趣的方向 开始阅读, 在精不在多

2. 自上而下,由表及里

如果你想阅读一个外部库的代码,首先你应当去读下它的文档,了解它解决了什么问题,有哪些功能;然后再看看它的示例代码,如何被使用;最后才是开始看源码。阅读的时候,先看项目的文件结构,有哪些功能模块;再看类、函数的组织;最后再深入实现的细节。

3. 了解基本的设计模式

设计模式不是具体的编程技术,却普遍存在于开发之中。找本 设计模式 的教程学一学(推荐《Head First Design Pattern》),再阅读代码,你会更容易理解别人为什么这么设计。

4. 选个趁手的编辑器

你不可能用记事本或者自带的 IDLE 来阅读源码。熟练 跳转函数定义、跳转函数调用、查找、断点 等操作,你才能愉快地阅读源码。另外说句, 折叠代码 是个好功能,会让你更清晰地观察代码结构。这些 PyCharm 都可以给你,相关介绍可在公众号对话里回复关键字 pycharm

我们一直谈论“写代码”,但你会“读代码”吗?

5. 尝试动手修改

看代码是单向的,更好的方式是边看边改,那怕仅仅是一些简单的输出也好。脑中设想下某段代码的作用,通过修改运行验证你的想法,这样的交互可以锻炼你对代码的理解。譬如我们的教程里有个 pygame 做的打飞机游戏 ,有些同学看了就会想,我能不能把子弹改成三排,能不能把敌机改成会左右移动等等。这样就会比你简单地看一遍再照抄一遍好很多。

6. 默写,对比

当你认为自己理解代码之后,把它关掉,自己实现一遍,完成后再与原代码进行对比。很多同学跟我说过,代码能看懂,就是自己写不出来。实际上,我觉得就是没看懂:你只是看懂了每一行代码的意思,但并没有 理解整个代码的设计 。从简单的代码做起,重复这样的过程。

读哪些代码

说了那么多,到底该读哪些代码?

1. 教程里的代码

新手不要急于求成,想一口吃成个大胖子。市面上评分较高的教程书籍,里面的代码都不会太差。认定一本后, 从头到尾的示例代码都认真地阅读、理解、运行(要手打不要复制) 。这是最简单最有效的方式,然而却并不是人人都能做到。依然有不少人宁愿相信只看几期在线视频就能学会。

2. 看官方示例的代码

大多数优秀项目都提供了详尽的文档,包含 Quick Start、Tutorial 之类的新手引导 。在学习初期,这些代码就是很好的例子。比如我们之前文章 这个男人让你的爬虫开发效率提升8倍 里介绍过的 requests 库,它的文档就很清晰,还是中文的。

3. Python 的内置代码

如果你用 PyCharm 之类的 IDE,很方便跳转或直接查看 Python 自身的代码。比如前文截图中就是我们常用的 random.py 的代码。可以从此类单文件代码看起。

4. 优秀的第三方库

这类有很多,不过难度对初学者来说可能有一点高,可在进阶时考虑。依然是推荐下大神 Kenneth Reitz 的项目,不仅仅是 requests ,例如他的 records、envoy 等小项目也是值得一读的。另外有个经典项目叫做 500 line or less ,都是不超过 500 行的小项目,地址: http:// aosabook.org/blog/

5. 关于 代码风格 ,先读一读这份指南:

https:// pythonguidecn.readthedocs.io /zh/latest/writing/style.html#code-style

以上就是关于 读代码 的一些建议。从简单的代码做起,贵在坚持。希望对各位有所帮助。

════

其他文章及回答:

如何自学Python |新手引导 |精选 Python 问答 |如何debug? |Python单词表 |知乎下载器 |人工智能 |嘻哈 |爬虫 |我用Python |高考 |requests |AI平台

欢迎微信搜索及关注: Crossin的编程教室


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器学习系统设计

机器学习系统设计

[德] Willi Richert、Luis Pedro Coelho / 刘峰 / 人民邮电出版社 / 2014-7-1 / CNY 49.00

如今,机器学习正在互联网上下掀起热潮,而Python则是非常适合开发机器学习系统的一门优秀语言。作为动态语言,它支持快速探索和实验,并且针对Python的机器学习算法库的数量也与日俱增。本书最大的特色,就是结合实例分析教会读者如何通过机器学习解决实际问题。 本书将向读者展示如何从原始数据中发现模式,首先从Python与机器学习的关系讲起,再介绍一些库,然后就开始基于数据集进行比较正式的项目开......一起来看看 《机器学习系统设计》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具