如何阅读代码(翻译理解)

原文:https://selftaughtcoders.com/how-to-quickly-and-effectively-read-other-peoples-code/

最好的阅读和理解别人的代码的方法

1. 找到一段代码,你理解这段代码实现的功能是什么,跟踪这个功能的实现流程

比如,我们知道某段代码其功能是,创建一个文件,文件内容为一系列电影的标题。应该做的事情是:

1. 找到哪几行代码创建了文件

2. 看如何将具体的内容写入文件

3. 然后看文件内容是如何生成的

我们可以称这些被连接的代码为“动作链”

不可避免地,使用这个方法将使你跳转到很多不同的代码区域。这可能会让你了解很多东西,比如:

   1. 代码如何组织(定义变量的地方,不同类型的函数所在的地方,等等)

   2. 作者的代码风格

   3. 作者如何思考和解决问题(很难描述,但是你看的例子越多,就越来越直观)

我们不应该上来就去直接尝试理解一大块文件是在做什么,而应该以一个功能为线索,一点一点的理解大文件中一些代码块的功能

这就好像你一开始站在一个漆黑的房间里,然后,一个一个地打开房间里不同的灯,逐渐揭示出房间外观的更多细节。

https://selftaughtcoders.com/wp-content/uploads/2015/05/using-paths-of-actions-to-understand-pieces-of-code.png

2. 清除已有的理解,并重复上面的工作,不断刷新已有的概念

重复这个过程多次,您将快速地提高对整个代码库越来越多部分的理解。
正如漆黑的房间逐渐被照亮一样,代码的某些部分也逐渐为你“点亮”,因为你理解了它们的功能。
这样做的原因是,在所有情况下,代码体都被设计用来处理一个(或多个)复杂的问题。所以你将始终拥有这些“行动链”。

你越能理解代码的不同部分是如何连接的,你就越能从整体上理解整个代码库。
而且,随着时间的推移,你看到的(好的)代码越多,你就越容易阅读和理解所有的代码,你也能更快地做到这一点。

.这就直接引出了我喜欢这个问题的第二个原因:它强调了接触高质量、高质量的专业知识例子的重要性。
在编程中,“专业知识的高质量例子”=其他程序员编写的好代码

让自己接触高质量、高质量的专业知识的重要性

Kathy Sierra在她令人难以置信的尖锐的新书《Badass: Making Users Awesome》中指出,接触高质量、高质量的专业知识是决定人们学习新技能速度和效率的两个主要因素之一。(另一种是有意识的练习。)

你看(或听)的专家例子越多,你就会变得越好。你接触专家或专家工作成果越少,你掌握专家技能的可能性就越小。”

举了一个”小鸡性别鉴别专家“的例子---挺有意思的

“在有足够多的反馈之后,你的大脑(开始)在你没有意识到的情况下发现模式和潜在结构。随着更多的接触,你的大脑会对其感知进行微调,最终发现什么才是真正重要的。即使你无法解释,你的大脑也能从噪音中做出更细微的区分和分类信号。
感性认识包括我们所认为的专家直觉。能够立即知道该走哪一步棋。或者这幅画是赝品。或者这房子的火会爆炸。或者是代码有问题

 

这个原理如何作用在编程上

 

最重要的是,你要知道你编程的时间越长——因此你看到的不同类型的代码样本越多——你就越容易理解别人的代码。你做得越快。

而且它还不止于此:您还会在自己的编码中看到巨大的积极收益。所以如何?
1. 你将能够更快地理解代码示例和在你自己编程时不可避免地引用的示例(例如,一些来自在线课程的东西;或一个片段从一个StackOverflow的帖子)。
2. 您将能够一眼就理解过去编写的代码。(而且,不可避免的是,在以后的工作中,您将会同时处理许多不同的代码片段,所以这种能力会带来巨大的回报。)

最终,这意味着:
1. 少停顿
2. 更多的进程

等于 更多的乐趣和享受---life better!
 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值