成为一名更好的程序员:如何阅读源代码
本文由EarlGrey@编程派编译,如需转载,请务必注明作者及出处。
- 原文链接:Python Practice Projects
- 译文链接:编程派
阅读源代码有许多益处。你会发现新的架构(construct)和库,与其他的代码维护者产生共鸣,但最重要的是学会如何组织代码,避免因内部极其复杂而变得不可维护。
但是也有一个不好的地方,那就是阅读源代码太困难了。每当我看到一个新的代码库(code base)时,这种让人眩晕的感觉就充斥了我的大脑。我的内心告诉我压根不想趟眼前这趟浑水。
这是(希望是)正常的反应。当我们的大脑接触过多的新东西,就会产生排斥。造物主赋予我们的这台强大的模式匹配机器根本找不到规律。所有的抽象(abstraction)都是之前没见过的,类的名称也毫无印象。程序又到底是从什么地方开始执行的?
对此,我能给出的一般性建议如下:1. 寻找并建立自己能够理解的初步基础,通常就是主要的入口点(main entry point)。2. 从这个基础开始,逐步探索主要功能。3. 记录下自己的见闻。
从头开始
窍门就是给自己一个起点。我是这样做的。我通过-h
选项运行程序,并调用help命令。之后我复制其中一条help文档字符串,以此为检索词搜索一遍代码库,找到这个帮助文档所在地方。通常情况下,调用help命令之后你会发现离程序的主入口点很近了。
辨明轮廓
找到主入口点之后,我会运行几个文档中提供的示例。然后,我会试着追踪主要的代码块,大致了解下每个部分是如何连接起来的。
我会问自己,是否存在一个管理程序,负责调用一堆帮助函数和类(helper functions and classes)?是不是有一些类是平级关系,相互之间轮流交换控制权?是不是有一个程序逐步执行的主任务队列?
了解全局有助于你理清小细节。如果你没有理解程序的主流程就闷头读下去,那你很可能会被细枝末节搞得焦头烂额。
勤做笔记
我习惯直接在代码中做笔记。做笔记的时候,我会使用特殊的注释符(例如,使用#=>
,而非常用的#
),这样可以将我自己的笔记与原作者注释区分开来。
如果碰到巧妙的技巧、不易理解的流程、编程架构(construct)的漂亮使用方式或者是其他任何你想牢记的内容,务必要做笔记。如果你读不下去了,你也可以做个记录,提醒自己之后要回去再读看不懂的部分。
通过写下你的思绪,你实际上是在把那块代码变成你自己写的。慢慢地,你就会开始在工作中自然地用上新掌握的那些架构(construct)。
融汇贯通
学习编程,是一个反复读代码和写代码的持续过程。只要你愿意接触不同的风格、代码,最终你会形成自己的独特视角和思维。
from: http://codingpy.com/article/become-better-programmer-by-reading-source-code/
成为一名更好的程序员:如何阅读源代码相关推荐
- 怎样成为一名更优秀的程序员?我总结出 7 条建议,希望对你们有帮助!
有几个人在 React 大会上向我请教一个问题--如何成为一名更优秀的程序员.人们将我视为一名非常资深的程序员,因此值得听听我的建议.我觉得可以分享一下,自己多年来在编程方面的"思维模式&q ...
- 怎样成为一名更优秀的程序员?我总结出 7 条建议
有几个人在 React 大会上向我请教一个问题--如何成为一名更优秀的程序员.人们将我视为一名非常资深的程序员,因此值得听听我的建议.我觉得可以分享一下,自己多年来在编程方面的"思维模式&q ...
- 程序员 rs编码_为什么声明性编码使您成为更好的程序员
程序员 rs编码 在许多情况下,具有功能组成的声明式解决方案提供了优于传统命令式代码的出色代码指标. 阅读本文并了解如何使用具有功能组成的声明性代码成为一名更好的程序员. 在本文中,我们将仔细研究三个 ...
- 比程序员更好的职业_立即成为更好的程序员的20条技巧
比程序员更好的职业 目录: (Table of contents:) Think Before You Code 编码前先思考 Understand the Business Behind Every ...
- 如何成为一名现代的Linux程序员
如何成为一名现代的Linux程序员 近几年来,Linux有了很大的发展,已从一个不起眼的小玩意发展到在越来越多的<财富>500强公司中发挥巨大作用.从人们使用的手机到最大型的超级计算机集群 ...
- 程序员如何学习更好的知识_如何保持学习并成为更好的程序员
程序员如何学习更好的知识 by Kevin Gardner 凯文·加德纳(Kevin Gardner) 如何保持学习并成为更好的程序员 (How to keep learning and become ...
- 没有学历文凭,如何成为一名优秀的 Java 程序员?
作为编程语言界的常青藤 Java,无论是在企业级应用,还是后端开发中,均有着无可替代的地位.而对于 Java 的入门,很多新手们不可避免的会走一些弯道.那么,如何才能有效地避开这些误区?又该如何快速实 ...
- 如何进阶一名有竞争力的程序员?
前言 这段时间,又互联网寒冬了,你看消息满天飞.一瞬间,裁员的,辟谣的,很是热闹.这搞得我们程序员很难受,本来压力就大,还动不动有人在你耳边煽风点火制造恐慌.我想说:难道就不能消停消停吗?我还清楚地记 ...
- 如何编写好的代码/成为一个更好的程序员
如何编写好的代码/成为一个更好的程序员 几个月前,有一位演讲者来到公司谈论优美的代码,他的论点是优美的代码以许多不同的形式出现.简单中有优美,折衷中有优美,稳定性上有优美,功能上有优美,坚固性上有优美 ...
最新文章
- 计算机java语言教程,计算机JAVA教程二讲Java语言基础知识.doc
- iOS开发 - App程序启动原理
- OutLook 2010 (Bata) 中的邮件导出功能
- sql server 查询本周、本月所有天数的数据
- 详解Spring中@Autowire,@Value 注解实现原理
- golang |问题代码报go并发死锁
- [note]标点符号和数学符号所对应的英文
- scala trait 另一种用法类混入
- mybatis 多表插入_CRUD_Operator-Mybatis
- 网站安全性之js注入
- php post伪装ip,PHP中用CURL伪造IP来源的方法
- 51单片机:共阴数码管动态显示(定时器+中断)
- 报错SyntaxError: Unexpected token T in JSON at position 0 at JSON.parse (<anonymous>)的解决方法
- Apple Watch更懂女人心
- 请帮我查看一下2.19号邢台发往北京高铁的班次,以及各个班次的时间
- python 模拟浏览器selenium_python爬虫10:使用selenium模拟浏览器登录账号
- 苍狼敏捷软件开发团队建设指南-1-团队模型
- XBee zigbee 使用指南---XBee API模式示例
- 合泰HT32F52352 USART串口与电脑通信控制LED
- 孩子长高应该吃什么呢?