本文主要是介绍01.26 Day 42 - 重温 Day 39-40,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
大家好,我是 Snow Hide,作为《左耳听风》这个专栏的学员之一,这是我打卡的第 42 天,也是我第 48 次进行这种操作。
今天我温习了该专栏里叫《高效学习:如何学习和阅读代码》、《高效学习:面对枯燥和量大的知识》的文章。
关键词总结:读文档还是读代码(代码、文档/书、人人对话、人机对话、看书或代码的目的、看代码而不看文档的原因、从感性认识到理性认识)、如何阅读源代码(阅读代码的前提(基础知识、软件功能、相关文档、代码的组织结构)、代码组成部分(接口抽象定义、模块粘合层、业务流程、具体实现(代码逻辑、出错处理、数据处理、关键算法、底层交互)、运行时调试))、阅读代码的方法、如何面对枯燥的知识(解决办法)、如何面对大量的知识、认真阅读文档、其他几个实用的技巧(用不同的方式来学习同一个东西、不要被打断、总结压缩信息、把未知关联到已知、用教的方式来学习、学以致用、不要记忆、多犯错误)。
所学总结:
高效学习:如何学习和阅读代码
读文档还是读代码
代码
What(实现什么), How(怎么实现) & Details(实现细节)。
文档/书
What(实现什么), How(怎么实现) & Why(为什么这么实现)。
人人对话
书和文档是人对人说的话。
人机对话
代码是人对机器说的话。如果你想知道机器都干了什么,那你应该看代码。
看书或代码的目的
- 如果你想了解一种思想、方法、原理、思路、经验,那么阅读书籍和文档会更高效;
- 如果你想了解的是具体细节,比如协程的实现、模块的性能、算法的实现,那么阅读代码是比较靠谱的。
看代码或看文档的原因
- 当没有文档或文档质量较低时,需要看代码;
- 当掌握的知识既不系统,也不结构化时,需要看书;
- 在不了解原理,读不懂代码或误解代码用意时,需要了解技术原理方面的基础知识;
- 当不清楚一个算法的实现时,需要先看这个算法的设计思想,再看代码;
- 当自己写的代码别扭时,需要看别人是怎么实现的。
从感性到理性
- 如果你是新的,那应该多读代码,多写代码,你需要的是 “感性认识”。所以,新手阶段的你会喜欢 Github;
- 如果你是老手,已经有多年的 “感性认识”,那你接下来需要的则是更多的 “理性认识”。所以,该阶段的你会喜欢读高质量的书籍以及文章。
如何阅读源代码
阅读代码的前提
基础知识
相关语言和基础技术的知识。
软件功能
有哪些特性、配置项。先读一遍使用手册,感受一下运行起来的软件是什么样的。
相关文档
相关的内部文档,Readme、Release Notes、Design 或 Wiki。
代码的组织结构
每个目录实现什么功能,每个文档是做什么的。如果要读的是在某种标准框架下组织的程序,那代码就不难理解了。
代码组成部分
接口抽象定义
代码有很多接口或抽象定义,了解来龙去脉是非常关键的。
模块粘合层
中间件(middleware)、Promises 模式、毁掉(Callback)、代理委托、依赖注入等等。这些技术将平铺直述的代码分裂了,所以不容易看明白其中缘由。
业务流程
数据是如何被传递和处理的。需要用到程序流程图或时序处理图。
具体实现
深入细节,阅读代码的具体实现。
代码逻辑
- 业务逻辑:处理业务的代码;
- 控制逻辑:控制变量、多线程处理、异步控制、远程通讯以及对象序列化反序列化等等。
出错处理
阅读代码时将处理错误的代码删掉。
数据处理
大部分代码是做数据传输的。例如 DAO、DTO、JSON 或 XML 等等。
关键算法
索引表、全局唯一 ID、信息推荐、统计以及通读(Gossip)等最有技术含量的核心算法。
底层交互
与操作系统或 JVM 交互的代码,读之前需要一定的底层技术知识。
运行时调试
使用日志或设置断点跟踪来看代码的运行过程,是了解代码的好方式。
阅读代码的方法
- 自顶向下,从总体到细节的阅读法;
- 画程序流程图、调用时序图以及模块组织图等等;
- 归类代码逻辑、排除杂音;
- 调试跟踪代码以了解其运行过程。
高效学习:面对枯燥和量大的知识
如何面对枯燥的知识
解决办法
- 找到应用场景,从实践开始再返回去学理论;
- 带着问题去学习,并得到反馈;
- 找懂的人带一下,会更快上手。
如何面对大量的知识
- 要学原理,它是经得住时间考验的;
- 带着问题和挑战去学习,并完成挑战;
- 将学习心得、过程、笔记、代码分享出来。
认真阅读文档
认真阅读用户手册不但可以少掉坑,它还能让你学到很多。
其他几个实用的技巧
用不同的方式来学习同一个东西
看书、听课、创建脑图、写博客、讲课、解决实际问题。
不要被打断
最好找一个别人找不到你的地方。
总结压缩信息
只关心关键点。使用表格、图示、笔记或脑图来压缩信息。
把未知关联到已知
将新学的知识点关联到已知的事物上。
用教的方式来学习
因为要交给别人,所以你不但要把自己已掌握的东西学好,还要把周边的知识也一起学了,才不容易被问倒。
学以致用
在实践中,你才会遇到非常细节和具体的问题,这些会让你重新思考以及深化学习。
不要记忆
找方法,那些可以推导出知识或答案的方法。
多犯错误
通过错误总结教训,你会比没有犯过的人有更深的体会。同样的错误不要犯两次,低级的错误最好不犯。
末了
重新总结了一下文中提到的内容:读文档读代码、读书/文档以了解思想/方法/原理、读代码以了解具体细节、阅读代码的方法以及技巧、为什么会有枯燥的知识、如何面对枯燥的知识、如何面对大量的知识、要学以致用学习原理、认真阅读文档、实用的学习技巧。
这篇关于01.26 Day 42 - 重温 Day 39-40的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!