如何阅读别人的代码 [原]

SDXL真源码阅读记录(不是调用一下出图就行) SDXL源码阅读记录 阅读详情
代码阅读的必要性
阅读别人的代码作为开发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。如果你有机会阅读一些操作系统的代码会帮助你理解一些基本的原理。还有就是在你作为一个质量保证人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力是不能完成相应的任务。最后一个就是如果你中途接手一个项目的时候或给一个项目做售后服务的时候是要有阅读代码的能力的。

收集所有可能收集的材料
阅读代码要做的第一件事情是收集所有和项目相关的资料。比如你要做一个项目的售后服务,那么你首先要搞明白项目做什么用的,那么调研文档、概要设计文档、详细设计文档、测试文档、使用手册都是你要最先搞到手的。如果你是为了学习那么尽量收集和你的学习有关的资料,比如你想学习linux的文件系统的代码,那最好要找到linux的使用手册、以及文件系统设计的方法、数据结构的说明。(这些资料在书店里都可以找到)。

材料的种类分为几种类型
1基础资料。
  比如你阅读turbo c2的源代码你要有turbo c2的函数手册,使用手册等专业书籍,msc 6.0或者java 的话不但要有函数手册,还要有类库函数手册。这些资料都是你的基础资料。另外你要有一些关于uml的资料可以作为查询手册也是一个不错的选择
2和程序相关的专业资料。
  每一个程序都是和相关行业相关的。比如我阅读过一个关于气象分析方面的代码,因为里边用到了一个复杂的数据转换公式,所以不得不把自己的大学时候课本找出来来复习一下高等数学的内容。如果你想阅读linux的文件管理的代码,那么找一本讲解linux文件系统的书对你的帮助会很大。
3相关项目的文档资料
这一部分的资料分为两种,一个相关行业的资料,比如你要阅读一个税务系统的代码那么有一些财务/税务系统的专业资料和国家的相关的法律、法规的资料是必不可少的。此外就是关于这个项目的需求分析报告、概要设计报告、详细设计报告,使用手册、测试报告等,尽量多收集对你以后的代码阅读是很重要的

知识准备
了解基础知识,不要上来就阅读代码,打好基础可以做到事半功倍的效果

留备份,构造可运行的环境
代码拿到手之后的第一件事情是先做备份,最好是刻在一个光盘上,在代码阅读的时候一点不动代码是很困难的一件事情,特别是你要做一些修改性或增强性维护的时候。而一旦做修改就可能发生问题,到时候要恢复是经常发生的事情,如果你不能很好的使用版本控制软件那么先留一个备份是一个最起码的要求了。
在做完备份之后最好给自己构造一个可运行的环境,当然可能会很麻烦,但可运行代码和不可运行的代码阅读起来难度会差很多的。所以多用一点时间搭建一个环境是很值得的,而且我们阅读代码主要是为了修改其中的问题或做移植操作。不能运行的代码除了可以学到一些技术以外,用处有限。

找开始的地方
做什么事情都要知道从那里开始,读程序也不例外。在c语言里,首先要找到main()函数,然后逐层去阅读,其他的程序无论是vb、delphi都要首先找到程序头,否则你是很难分析清楚程序的层次关系。


分层次阅读
在阅读代码的时候不要一头就扎下去,这样往往容易只见树木不见森林,阅读代码比较好的方法有一点象二叉树的广度优先的遍历。在程序主体一般会比较简单,调用的函数会比较少,根据函数的名字以及层次关系一般可以确定每一个函数的大致用途,将你的理解作为注解写在这些函数的边上。当然很难一次就将全部注解都写正确,有时候甚至可能是你猜测的结果,不过没有关系这些注解在阅读过程是不断修正的,直到你全部理解了代码为止。一般来说采用逐层阅读的方法可以是你系统的理解保持在一个正确的方向上。避免一下子扎入到细节的问题上。在分层次阅读的时候要注意一个问题,就是将系统的函数和开发人员编写代码区分开。在c, c++,java ,delphi中都有自己的系统函数,不要去阅读这些系统函数,除非你要学习他们的编程方法,否则只会浪费你的时间。将系统函数表示出来,注明它们的作用即可,区分系统函数和自编函数有几个方法,一个是系统函数的编程风格一般会比较好,而自编的函数的编程风格一般比较会比较差。从变量名、行之间的缩进、注解等方面一般可以分辨出来,另外一个是象ms c6++会在你编程的时候给你生成一大堆文件出来,其中有很多文件是你用不到了,可以根据文件名来区分一下时候是系统函数,最后如果你实在确定不了,那就用开发系统的帮助系统去查一下函数名,对一下参数等来确定即可。
写注解
写注解是在阅读代码中最重要的一个步骤,在我们阅读的源代码一般来说是我们不熟悉的系统,阅读别人的代码一般会有几个问题,1搞明白别人的编程思想不是一件很容易的事情,即使你知道这段程序的思路的时候也是一样。2阅读代码的时候代码量一般会比较大,如果不及时写注解往往会造成读明白了后边忘了前边的现象。3阅读代码的时候难免会出现理解错误,如果没有及时的写注解很难及时的发现这些错误。4不写注解有时候你发生你很难确定一个函数你时候阅读过,它的功能是什么,经常会发生重复阅读、理解的现象。
好了,说一些写注解的基本方法:1猜测的去写,刚开始阅读一个代码的时候,你很难一下子就确定所有的函数的功能,不妨采用采用猜测的方法去写注解,根据函数的名字、位置写一个大致的注解,当然一般会有错误,但你的注解实际是不但调整的,直到最后你理解了全部代码。2按功能去写,别把注解写成语法说明书,千万别看到fopen就写打开文件,看到fread就写读数据,这样的注解一点用处都没有,而应该写在此处开发参数配置文件(****。dat)读出系统初始化参数。。。。。,这样才是有用的注解。3在写注解的使用另外要注意的一个问题是分清楚系统自动生成的代码和用户自己开发的代码,一般来说没有必要写系统自动生成的代码。象delphi的代码,我们往往要自己编写一些自己的代码段,还要对一些系统自动生成的代码段进行修改,这些代码在阅读过程是要写注解的,但有一些没有修改过的自动生成的代码就没有必要写注解了。4在主要代码段要写较为详细的注解。有一些函数或类在程序中起关键的作用,那么要写比较详细的注解。这样对你理解代码有很大的帮助。5对你理解起来比较困难的地方要写详细的注解,在这些地方往往会有一些编程的技巧。不理解这些编程技巧对你以后的理解或移植会有问题。6写中文注解。如果你的英文足够的好,不用看这条了,但很多的人英文实在不怎么样,那就写中文注解吧,我们写注解是为了加快自己的理解速度。中文在大多数的时候比英文更适应中国人。与其写一些谁也看不懂的英文注解还不如不写。
重复阅读
一次就可以将所有的代码都阅读明白的人是没有的。至少我还没有遇到过。反复的去阅读同一段代码有助于得代码的理解。一般来说,在第一次阅读代码的时候你可以跳过很多一时不明白的代码段,只写一些简单的注解,在以后的重复阅读过程用,你对代码的理解会比上一次理解的更深刻,这样你可以修改那些注解错误的地方和上一次没有理解的对方。一般来说,对代码阅读3,4次基本可以理解代码的含义和作用。
运行并修改代码
如果你的代码是可运行的,那么先让它运行起来,用单步跟踪的方法来阅读代码,会提高你的代码速度。代码通过看中间变量了解代码的含义,而且对 以后的修改会提供很大的帮助

用自己的代码代替原有代码,看效果,但在之前要保留源代码
600行的一个函数,阅读起来很困难,编程的人不是一个好的习惯。在阅读这个代码的时候将代码进行修改,变成了14个函数。每一个大约是40-50 行左右。
QEMU+KVM实战:5分钟搞定Ubuntu 24.04虚拟机搭建(附性能优化技巧) 本文详细介绍了在Linux宿主机上使用QEMU和KVM快速搭建Ubuntu 24.04虚拟机的完整实战流程。内容涵盖从环境准备、核心组件解析到具体的安装命令,并重点分享了针对CPU、内存、存储I/O及网络性能的深度优化技巧,旨在帮助用户构建一个响应迅速、资源隔离良好的高性能虚拟化开发与测试环境。 阅读详情

相关推荐

深入解析AndroidManifest.xml与device_admin.xml:打造完美DeviceOwner应用配置

本文深入解析了Android企业级开发中DeviceOwner应用的核心配置文件AndroidManifest.xml与device_admin.xml。详细阐述了如何精准声明DeviceAdminReceiver、定义管理策略,并提供了通过ADB命令进行设置与验证的实战指南,帮助开发者构建权限完整、配置正确的设备所有者应用。

ice55的博客 679

如何看懂别人的项目代码

1:先运行别人的demo,然后再去看文档。 2:

qqmuhua123的专栏 4513

别再手动调参了!用MATLAB+改进PSO算法,5步搞定机械臂轨迹优化(附完整代码)

本文介绍如何利用MATLAB和改进PSO算法快速优化机械臂轨迹规划,仅需5步即可完成传统耗时的手动调参过程。通过混沌初始化、自适应权重等创新方法,改进PSO算法显著提升优化效率,实现全局最优解搜索,适用于工业自动化中的机械臂控制。文章包含完整MATLAB代码实现,帮助工程师轻松应用于实际生产场景。

weixin_29232121的博客 353

怎么阅读代码,老司机总结的 6 个实用经验

④ 看文件里面的方法,以及方法继承,方法前面的注释。关键信息,支持 OpenGL ,Android,C 语言写的,以及版权信息。了全部资料,非常详尽,每个参数都给出了注释,说明,还有就是 Google。下来,然后慢慢消化,最后画出来,变成文档。官方的 GitHub 上,也给出了示例代码,这个就是你的一手资料。刚上班的时候,选择的是跟着公司的文档,去敲代码,把 Demo 跑通。那么第二步就是找到 Demo,去查看这个代码,对于它的流程,演示。面,就如同回调陷阱一样,因为一层层的调用,导致大脑的堆栈溢出,

程序员入门进阶 6117

SAR ADC设计——SAR Logic原理

SAR ADC设计——SAR Logic原理 参考:集成电路设计实践 SAR ADC 清华大学 李福乐 文章目录SAR ADC设计——SAR Logic原理一. Overview二. TSPC(True Single Phase Clock)三. SC_Gen(Sequential Control Generator)四. LATCH_Dynamic五. 时序控制逻辑总结六. SW产生七. DO产生八. GT产生九. SAR Logic模块总结 一. Overview 输入:CKC,CompB,SAMPL

夏风喃喃的博客 1万+

智能车‘大脑’的诞生:揭秘电磁循迹代码背后的控制论与系统思维

本文深入探讨智能车电磁循迹系统的核心架构与控制原理,揭示了其作为精密闭环系统如何通过模块化设计、信号处理、PID控制算法及电机驱动实现自主导航。重点分析了电磁信号采集与处理流程框架,为开发者提供从理论到实践的全面指南。

arduino9maker的博客 531

如何阅读别人的代码

会读好源码,才能写出好代码而且除了经常写代码,还要保持习惯看看别人是怎么写的,这里我只引出一个话题就是如何阅读别人的代码。 一个工整的代码就好比欣赏一个漂亮的美女一样让人赏心悦目,百看不厌,一个乱糟糟的代码就不忍直视,而且还要吐槽他,对于阅码无数的老司机而言,保持良好的编码和阅读习惯很重要,读别人的代码并不大费力,对于新手而言,我觉得这篇文章对你很有帮助。保持阅读他人代码的习...

yolo模型训练找我,AI游戏合作找我 2426

Unipush2.0 App消息推送(在线+离线推送)

使用unipush2.0进行消息推送,包含在线跟离线

weixin_50251467的博客 3696

如何阅读别人的代码?

1.不要畏惧。我发现大家都经常会感叹XXX强大,YYY流行,无形中你会把它放在一个不可触及到的地位,感觉它很难,而令自己不敢去挑战它。 2.带着问题去阅读代码,这也是我认为最有效的方式。这会让你在阅读时候有个主线,比较有针对性。 3.断点调试。在Python代码中使用pdb一般不太好使,因为代码复杂的话,这种断点需要你使用多个n跳到对应的位置,我一般都是先抛出异常,然后使用pdb的up/...

qq_40723205的博客 1496

TOD和PPS精确时间同步技术

授时

u010783226的专栏 1万+

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2583

从源码出发逐步解析Swin Transformer各个细节,让你不再担心只会原理而写不出来代码!(最后附原论文详细阅读)~

分级特征表示:Swin-T引入分级特征表示,将图像按层次进行划分,允许底层特征捕获更局部、细节的信息,高层特征则能够捕获更全局、抽象的信息。这种分级特征表示的设计使得模型能够更好地处理不同尺度的特征。低计算成本:相对于传统的全局自注意力机制,Swin-T的窗口注意力机制降低了计算复杂度,使得模型更加高效。此外,Swin-T还使用了相对位置编码和间距实现的移位操作,进一步提升了计算效率。泛化能力:Swin-T在大规模图像分类任务上进行了训练,并在多个数据集上进行了评估,展示了良好的泛化能力和通用性。

小小帅 2302

优快云独家首发!万字长文,YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程!小白也能看懂!掌握了这个就掌握了魔改YOLO的核心!

🍀🍀🍀YOLOv5/v7/v8算法模型yaml文件史上最详细解析与教程,全网最强,学不会算我输!!!

Coding... 1万+

自动阅读专业版第九次更新---原薅羊毛专业版(最后一次源代码分享)

源码链接:https://pan.baidu.com/s/1dQ9EXyT-odQtQsRqkMSr4Q提取码:44to 首先感谢大家的支持,半年多的时间能到现在的层次还得感谢大家的赞助~这次是薅羊毛专业版源码最后一次公布,原因很简单盗版猖獗无法禁止还有很多人弄个微信小号注册个优快云进行瞎评论胡乱说甚者还有辱骂的。既然这样我索性也就不公开代码了免得盗版和玷污大家的眼球(代码写的不好)。大家放心亚丁号自动阅读(薅羊毛专业版)还会更新。下次更新采用在线更新模式。 注:本次是公布源代码的 还是按照以前的.

MarisTang的博客 841

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python代码阅读(第33篇):反转字典

本篇阅读的代码实现了将一个字典进行反转,且原字典的值非唯一。 本篇阅读的代码片段来自于30-seconds-of-python。

Yiess的博客 922

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

剥开比原看代码(一):初始化时生成的配置文件在哪儿

作者:freewind 比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 人们常说,“阅读源代码”是学习编程的一种重要方法。作为程序员,我们在平时的学习工作中,都应该阅读过不少源代码。但是对于大多数人来说,阅读的可能更多是一些代码片断、示例,或者在老师、同事...

weixin_33743880的博客 99

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

三四秒-IT聚合阅读平台上线

我业余时间做的IT聚合阅读平台早在2个月前就已经上线,iOS版本经过多次提交修改后仍然没有通过审核,现暂已放弃提交iOS版本。目前大家只能看到网页版,抱歉!名字:三四秒网址:http://www.34miao.com1、为什么要做这个?聚合嘛,肯定是为了一站式阅读。2、聚合了哪些站点?抱歉,因为这个是为我自己打造的,所以聚合源上完全主观,谢绝客观。如正是您所需,万幸,如不是,出门右转有很多聚合平台的

小小的客栈 大大的江湖 1045

深入解析:Python如何高效获取1688 app原数据API接口

通过Python获取1688 app的原数据API接口,我们可以轻松地获取海量的商品数据,为企业的决策和市场分析提供有力支持。在实际操作中,我们需要充分了解1688 app数据的重要性,利用Python的强大功能,按照正确的步骤和方法获取数据,并注意遵守相关规范和要求,确保数据的安全和合规使用。希望本文能够为你在数据获取和分析的道路上提供一些帮助和启发,让你能够更好地挖掘数据背后的价值,为企业发展创造更多的机遇。如遇任何疑问或有进一步的需求,请随时与我私信或者评论联系。

2401_89446003的博客 908

Wordpress主题开发:阅读量美化以k为单位

最近在为自己的博客设计主题,在文章阅读量这块设计的时候怎么搞都不满意,最主要的原因就是不美观,参阅了大部分网友的设置之后,最后决定超过1000阅读量的时候采用以k为单位显示,这样显得数字不是很长,又非常的通俗易懂。 本博客阅读量采用的是 低于1000阅读量以原数字显示 大于1000小于10000的以k为单位显示,保留两位小数 大于10000的以w为单位显示,保留一位小数 大于100000...

u011423894的博客 1158

Mybatis源码解析一——搭建阅读环境

搭建阅读环境 Mybatis源码解析一——搭建阅读环境 文章目录搭建阅读环境前言一、拉取源码二、包结构三、test包结构四、运行4.1测试数据库创建4.2配置数据源4.3运行总结 前言 在阅读源码之前,我们需要搭建好源码阅读的环境。需要使用到的依赖有IDEA,GIT,MAVEN。 一、拉取源码 先从官方仓库 Mybatis fork出自己的代码库,再从自己的代码库中拉取文件。 二、包结构 三、test包结构 Mybatis各个模块都有对应的test包,这对源码调试有非常大的帮助 四、运

生活不止眼前的苟且 493

​​标星数万的开源阅读项目,开发者被判入狱,GitHub代码全清空了

前两天刷到一个消息,愣了好一会儿。GitHub上那个挺火的开源阅读App——Legado,开发者被判侵犯著作权罪,坐牢了。仓库里的代码也被清得干干净净,一个文件都没剩下。可能有人还不知道这事。简单说,Legado是一款开源阅读工具,用户可以导入”书源”来看小说。工具本身没啥问题,但开发者干的事越界了——通过书源功能深度链接盗版小说网站,把盗版内容系统性地聚合起来,让用户直接在App里白嫖。说白了,这不是做了一个阅读器,而是搭了一个盗版分发平台。

498

如何阅读别人的源代码

网上搜到的一篇介绍阅读别人源代码的方法,放在这里,有空可以查看。         阅读别人的代码作为开发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。如果你有机会阅读一些操作系统的代码会帮助你理解一些基本的原理。还有就是在你作为一个质量保证人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力是不能完成相应的任务。最后

天道酬勤 3万+

如何阅读项目代码

阅读源代码的能力算是程序员的一种底层基础能力之一,这个能力之所以重要,原因在于: 不可避免的需要阅读或者接手他人的项目。比如调研一个开源项目,比如接手一个其他人的项目。 阅读优秀的项目源码是学习他人优秀经验的重要途径之一,这一点我自己深有体会。 读代码与写代码是两个不太一样的技能,原因在于“写代码是在表达自己,读代码是在理解别人”。因为面对的项目多,项目的作者有各自的风格,理解起来需要花费不少的精力。 1.先跑起来 开始阅读一份项目源码的第一步,是先让这个项目能够通过你自己编译通过并且顺利跑起来。这一点尤其

chumingqian的博客 5180

如何有效的阅读开源代码

一、初步了解 1.在下载源代码之后,先看下代码目录组织结构,如base代表基础库,net代表网络库等我 2.开始阅读框架的源代码之前,先去google搜集下资料: 这个框架是解决了什么问题?都是用了什么技术? 分为多少个模块,每个模块之间有什么联系? 尽量看官网英文的资料,因为中文技术博客的内容很多是错误的。 3.试图将程序完整的跑起来,编译通过、修改配置文件,然后正常运行起来; 这...

脚踏实地,不断突破自我,每天有收获就OK 4953
下一篇: 当项目组长的一些体会
bbbian
博客等级 码龄26年 90粉丝 98原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值