- 时间:2021-02-11 15:13 编辑:于铭发 来源:蚂蚁资源 阅读:235
- 扫一扫,手机访问
摘要:大家好,今天给大家介绍关于阅读源码(开源阅读)的相关内容,详细讲解如何阅读源代码,阅读源代码,如何阅读源代码等,希望可以帮助到您。
如何阅读源代码,“除了阅读代码外,没有更好的方法。7.在查找错误时,请从问题的根目录分析到问题的根源。不要遵循路径的歧视(错误地进入您的歧视) 。8.我们充分利用调试器|编译器给定警告或输出符号代码|系统调用跟踪器|数据库结构化查询语言日志机制|包工具和Windows的邮件探测器,错误的位置。9.对于那些大且齐全的系统,您只需要更新其所有功能,您可以对其进行更改。10.在向系统添加新功能时,第一个任务是查找类似的功能,代码是要实现的模板。 11.从功能函数来描述C的实施ode,您可以根据字符串消息或使用关键字进行搜索。 12.当移植代码或修改界面时,您可以直接定位编译器所涉及的范围,从而减少代码读取的工作量。 13.当您重建时,您从与其配合使用的系统开始,您希望确保系统可以正常工作。测试用例(testcase)可以帮助您满足此约束。 14.阅读代码时,当您找到机会时,首先从系统的架构开始,然后逐渐改进,您可以获得最大的好处。 15.代码的可重用性是一个非常有吸引力,但很难理解和分离,您可以尝试找到包,甚至是其他代码。 16.审查软件系统时,请注意系统在许多部分中,不仅仅是执行陈述,也必须注意以下内容:文件和目录结构|生成和配置程序|用户界面和系统文档。 18.您可以将软件视为学习|教学|帮助帮助,接受机会帮助。 +++ ++++++++++++++++第2章:基本编程元素++++++++++++++++ 19.首先分析当一个程序,主要是一个很好的起点。 20.层压if-else-sere序列可以被认为是由互斥选择项目组成的选择结构。 21.有时,如果您想在某个方面的函数中知道该程序,请运行它光栅源代码更合适。 22.在分析重要计划时,最好识别重要部件。 23.了解本地命名约定,使用它们来猜测变量和函数的功能使用。 24.根据猜测修改代码时,您应该设计最初假设的过程。此过程可以包括使用编译器检查介绍断言|或执行适当的测试用例,了解代码,可以帮助您了解代码26的其余部分。解决从容易部分开始的困难。 27.要制定阅读相关文件的习惯,您将提升您阅读和编写代码的能力。 28.有许多代码。选定的政策:自下而上和自上而下的分析|应用测试方法并检查注释和外部文档,您应该根据NEE尝试所有这些方法DS的问题。 29.对于(i = 0; i 30.涉及两个项目,比较表达式(其中一个包括平等条件)可以被视为区间成员测试。31.我们通常可以将表达应用于样本数据以了解其含义。32。使用de摩根逻辑表达式简化复杂性。33.读取逻辑乘以表达式时,可以考虑通过左表达式进行问题分析问题;同样,类似地,您可以认为正在分析表达式。用左表达式,它是false。34. recishant您的控制代码,使其更容易阅读。35.使用条件函数?:表达式被理解为IF代码。36.不需要高效,牺牲易于阅读。37.高效算法和特殊优化真的很可能使代码更加复杂,使得了解更难以理解,但这并不意味着使代码更紧凑,不可读会提高其效率。 38创造性代码布局可用于提高代码的可读性。 39.我们可以使用空格|临时变量和括号来提高表达式的可读性。 40.读取您控制的代码时,开发评论习惯。 41.我们可以使用变量名称的良好缩进和明智的选择来提高准备好的程序的可读性。 42.使用Diff程序分析程序时,如果此历史跨越整个行,通常通过指定-W选项,让Diff忽略空白差异,避免通过校正校正校正层次结构。 43.循环DO循环的主体至少执行一次。 44.当执行算术运算时,当A&B可以被理解为%(B + 1)时,当B = 2N时。 45. a> n被理解为a / k,k = 2n。 47.每次分析一个控制结构时,都会被视为黑匣子。 48.每个控制结构的控制表达式作为其包含代码的断言。 49.RETURN,GOTO,休息和继续陈述,存在异常,这将影响结构化执行流程。由于这些声明通常终止或重新启动正在进行的循环,因此必须推出其行为。 50.用复杂的循环推理循环并保持不变,使用保持毫无意义的变换来合理地重新安排循环。简化代码的推理工作。 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++? ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++ +++ 52.理解特定语言构造函数的功能后,就可以更好地理解用于使用它们的代码。 53.识别并分类指针的使用。 54.在C程序中,指针通常用于构建链。数据结构|动态分配数据结构|实现参考呼叫|访问和迭代数据元素|传递阵列参数|参考功能|作为其他价值的别名|代表String |并直接访问系统内存。 55.通过它的参数可用于返回函数的结果,或避免参数复制带来的开销。 56.指向数组元素地址的指针,可以访问位于特定索引位置的元素。 57.指向指向数组元素和相应数组索引的指针,两者的操作都具有相同的语义。 58.使用全局或Stitic局部变量的大多数情况不会更新。 59.字符指针与字符数组不同。 60.确定并分类申请结构或分享每个原因的机构。语言中的结构将集中在一起,以便它们可以作为整体使用以从功能返回多个数据元素硬件设备中的建设性链数据结构|发射数据|网络链接S和存储媒体|实施抽象数据类型|并以面向对象方式编程。 62.普通体主要用于优化C程序中的存储空间|实施多态性|并访问数据不同的内部表达式。 63.一个指针,在将存储空间初始化为n e-compents后,可以使用n个元素数组。 64.动态分配的内部块可以通过焊接,或在程序的末尾释放,或者通过垃圾收集器释放以完成恢复;分配了函数后释放分配在堆栈上的内存块。 65.C程序使用typedef声明来促进抽象并增强代码的易于阅读性,从而防止可移植性问题,并模拟C ++和Java类别声明行为。66.您可以声明TypedeF声明变量定义:变量的名称是类型的名称;变量类型是与名称对应的类型。 ++++ +++++++++++第4章:C数据结构+++++++++++++ 67.了解基于的抽象数据类型的显式数据结构的操作潜在的。 68英寸。 C语言,通常使用内置阵列类型类型的实现向量,不再执行抽象。一个元素数组可以是序列的(i = 0; i 70.表达式sizeof(x)常规会获取使用memset或memcpy句柄阵列x所需的正确字节数(不是指针)。71。间隔一般使用间隔中的第一个元素和间隔后的第一元素。72.不对称间隔数量等于高边界与低边界之间的差异。 73.当非对称间隔的高边界等于低边界时,间隔是空的。 74.非对称间隔中的低边界代表了间隔的第一元素;高边界代表区间结构的第一个元素。 75.结构的结构通常代表一个由记录和领域组成的表。 76.指向结构的指针通常表示访问底层记录和字段的光标。 77.动态分配的矩阵通常存储为若要将指针或指向元素指针的指针组存储;可以根据二维阵列访问这两种类型。 78.动态分配矩阵存储在阵列形式中,定位t具有自定义访问功能的继承人元素。 79.抽象数据类型提供使用(或误用)使用(或误用)的置信度。 80.数组用作从0. 81开始的按钮。阵列通常用于有效的控制结构。编码,简化程序的逻辑。 82.通过存储数据元素和函数指针(指向处理数据元素的功能),代码可以通过将阵列中的每个位置存储在数据中来与数据相关联。 83.阵列可以在抽象机器或虚拟机(虚拟机)使用的数据或代码中,控制程序的操作。 84.表达式尺寸(x)/ sizeof可以被理解为阵列x元素编号。 85.如果结构包含指向结构本身的元素|名称接下来,此结构定义单向链表的节点。 86.链接表节点的透视图(例如堆上的全局或分发)指针通常表示链接列表的头部。 87.包含下一个和prev指针指向其自己的下一个和prev指针的结构可以是双向链表的节点。 88.了解复杂数据结构的指针操作,将数据元素绘制为框|指针是箭头。 89.递归数据结构通常由递归算法处理。 90.重要数据结构操作算法通常使用函数参数或模板参数来参数化。图91.该图的节点通常存储在阵列链接到链接列表中,或者通过图的边缘链接。 92. SID.在一般不被指针隐式采用的图中,明确地明确地示出了e。图93.该图的边缘通常被存储为动态分配。在两种情况下,阵列或链接列表都锚定在图中的节点上。在非映射中,它应该被视为同样的等同物,同样地在表达数据时处理。任务的代码不应该基于其方向成为部分依赖者。 95.在非连接的映射中,执行遍历代码应该能够打开孤立的子映射。 96.处理包含循环的图表时,在此过程中应避免遍历码代码。循环进入循环。 97.在复杂的地图结构中,其他类型的独立结构可能隐藏。 +++++++++++++++章节:高级控制处理++++ +++++++++++ + 98。常用定义的算法和数据结构通常使用递归函数定义来实现。 99.当推理递归函数时,从基准规则开始,并证明累进呼叫如何逐渐接近非递归参考样本代码。返回函数的循环。 103.从方法的定义中删除抛出子句,然后运行Java编译器以编译类的源代码,可以轻松找到可能致病异常的方法。 104.在多处理器计算机上运行的代码通常会围绕过程或线程。 105.工作组并行模型用于在多个处理器之间分配作业,或创建任务池,然后是大量必需的标准化工作分配。 106。基于线程的管理器/工作人员并行模型通常为工人任务分配耗时或阻塞操作,维护中心任务的响应性。 107.基于流程的管理器/工人并行模型用于重用现有过程,或使用系统模块,或使用系统模块,该系统模块定义好的接口来组织和分开粗略粒度。基于管道的并行处理,每个任务接收一些输入,处理它们,并生成输出被传输到下一个任务,执行不同的处理。 109.竞争条件很难触摸,相关代码经常将竞争条件传播到多种功能或模块;因此,由于竞争条件,难以隔离问题。 110用于数据结构ope在信号处理器中出现的分级代码和库呼叫是非常警惕的。 111.在读取包含宏的代码时,请注意宏既不是函数或非陈述。 112.DON ...而(块中的宏相当于控制块中的语句。113.宏可以访问其使用点中可见的所有局部变量。114.宏模数值115.基于宏的标记可以创建新的标签+++++++++++++++第6章:应对大型项目+++++++++++++++ 116We可以分析一个组织的组织方式通过浏览项目源代码的项目 - 项目源代码的分层目录结构。源树经常反映体系结构和软件上的结构。117.应用程序代码TRE的来源e通常镜像应用程序的部署结构。 118.不要被庞大的源代码吓倒;它们通常比小型专业项目更好。 119.当您首次触摸大型项目时,会一段时间熟悉项目的目录树结构。 120.项目的源代码远未编译。您可以获得可执行程序的计算机语言指令;项目源树通常包括规格|最终用户和开发人员文件|测试脚本|多媒体资源|汇编工具|本地化文件|修订历史|安装过程和许可信息。 121.大型项目的汇编过程通常与依赖项声明。关系关系通过工具程序,例如制作和派生过程,转换为特定的编译操作。 122.在大型项目中,生产文件通常通过配置步骤动态生成;在分析生产文件之前,您需要执行特定于项目的配置。 123.检查大编译过程中的每个步骤,您可以使用Make Program的-N交换机执行预览。 124.修订控制系统提供了来自存储库的最新版本的源代码。 125.您可以使用相关命令在可执行文件中显示修订版标识符关键字。将可执行文件与其源代码相匹配。 126.使用“修订日志”中出现的“错误跟踪系统”中的“数字”中的数字,您可以在数据库中找到问题的描述E BUG跟踪系统。 127.您可以使用修订版控制系统版本存储库,了解如何实现具体更改。 128.在软件开发过程的许多方面使用自定义编译工具,包括配置|编译过程管理|代码生成|测试和文档。 129.调试输出它可以帮助我们了解程序控制过程和数据元素的关键部分。 130.跟踪语句的位置通常是算法操作的重要组成部分。 131.您可以使用断言来验证算法操作的步骤|参数收到的功能|控制程序的控制流程|底层硬件属性和测试用例的结果。 132.鉴于算法的断言可以确认理解算法的操作方法,或作为原因的起点。 133.由于函数参数和结果,通常记录函数的前部条件和函数的后条件。 134.我们可以将整个功能的断言作为每个给定函数的规范。 135.测试用例可以部分地由函数规范替换。 136.您可以使用测试用例的输入数据来预览源代码序列。 +++++++ ++++++++++++章:编码规范和公约+++++++++++++++++ 137.理解给定的代码库后该文件组织,它可以更有效地浏览其源代码。 138.读取代码时,必须先确保编辑器或美丽的打印程序是一致的机智H风格规范后跟代码。 139.您可以使用代码块的缩进快速掌握代码的整体结构。 140. Pixabay到不一致的代码,应该立即给予足够的警惕。 141.在分析代码时,标记为XXX,FIXME和TODO的代码序列是特别应付的:可能会潜伏的错误。 142.常量使用大写字母命名,单词与下划线行。 143.包名始终从Java编码规范程序中的顶部域名(例如,ORG)开始。COM),类名和接口名称开始,方法和变量名称开始,方法和变量名称开始,方法和变量名称开始。144.在用户界面控制之前的匈牙利语笔记的前缀类型标签可以帮助我们确定联系它的作用。 145.不同的编程规格,便携式结构的组成具有不同的索赔。 146.在审查代码的可移植性时,或者当给定的编码规范用作指导时,必须注意规范对可移植性要求的定义和限制。 147.如果使用相应的编程结构实现GUI功能,则易于验证可以容易地使用给定用户界面的规范。 148.理解项目编制过程的组织后,我们可以快速阅读和理解相应的编译规则。 149.在检查系统的发布过程时,您通常可以使用相应发布格式的需求作为base.Quasi - +++++++++++第8章:文献++++++++++ 150.当读取代码,能够获得任何文件应利用尽可能。 151.通过阅读小时代码获得的信息仅相当于读取一分钟文档。 152.使用系统的规格文档,了解读取代码的操作环境。 153.软件需求规范是读取和评估代码的基准。 154.系统的设计规范可以用作认知码结构的通道图。 155.测试规范文档为我们提供了可用于预先呈现给代码的数据。 156.触摸未知系统时,功能描述和用户指南提供重要的背景信息以更好站在读取代码的上下文。 157.从用户参考手册中,我们可以快速获得,应用程序在外观和逻辑背景上。知识,从管理员的手册,您可以知道代码的界面|文件格式和错误消息。 158.使用文档可以快速获取系统的配置文件,了解代码以提供特定功能。 159.文件经常反映并提示系统的基本结构。 160.文档有助于了解复杂的算法和数据结构。标签的含义。 163.该文件可以提供非功能性需求背后的理论基础。 164.文件还将解释内部编程界面。 165.由于该文件与实际计划代码非常相似,因此它是骗局CERNED,所以通常可以呈现错误|不完整或过时。 166.文件还提供测试案例,以及实际应用。 167.文件通常包括已知的实现或错误。 168.环境中已知的缺点将记录在源代码中。 169.文件的变化可以让那些断层点。 170.相同源代码的重复或相互冲突的变更往往表明基本设计缺陷,以便维护人员需要一系列系列修补程序。 171.类似的维修适用于源代码的不同部分,通常代表一个词汇错误或疏忽。他们也可以在其他地方存在,并且文件经常提供不当信息,误导我们对来源的理解颂。 173.要警惕那些未认出的功能:将每个实例分类为合理|疏忽或有害的代码或文件应该相应地修复。 174.有时文件描述了,而不是根据已完成的实施,但系统应该是象征或未来的实施。 175.在源代码文档中,Word Gork意味着通常有关“了解”。 176.如果未知或特殊使用单词妨碍了对代码的理解,您可以尝试文档的词汇表(如果存在)|新黑客'dictionary [Ray96] |或者在网上找到它们在搜索引擎中。 177.始终用批判性态度查看文件,注意非传统来源,如笔记|标准|出版物|测试用例|邮件列表|新闻组|修订日志|问题跟踪数据库|营销材料|源代码本身。 178.始终以批判性态度查看文档;由于文档永远不会执行,对文档的测试和正式审查很少达到同一级别的代码,因此文档通常误导读者,或完全错误。 179.对于这些缺陷的代码来说,我们可以推断其真正的意图。 180.在阅读大型系统文档时,您必须首先熟悉文档的整体结构和约定。 181.在文档时,您可以使用工具,或将文本输出到高质量输出设备,如激光打印机,以提高读数效率。 +++++++++++++第9章:系统架构++ ++++++++++++ 182系统可以是(事实上这在主要系统)simultaneou在各种不同的架构里。以不同方式检查同一系统|分析系统的不同部分|或使用不同的分解级别,可以找到不同的架构类型。 183.协作应用程序或需要合作以访问共享信息或资源的半自动过程,通常使用集中存储架构。 184.使用集中存储库的黑板系统,非结构化密钥/值对存储为大量不同代码组件之间的通信集线器。 185.程序可以建模|设计和实现一系列数据转换,通常使用数据流(或管道过滤器)框架。 186.在质量自动数据处理的环境中,DATA流结构经常使用,在右侧,尤其如此,可以为数据工具提供大型支持平台。 187.数据流结构的重要迹象是:在程序中使用程序中的临时文件或管道在不同的过程之间进行通信。 188.使用该图标构建面向对象的对象中等和类别之间的关系。 189.您可以在建模工具中输入源代码,反向导出系统的体系结构。 190.具有大量子系统的系统通常按照分层框架组织。 191. Tylining框架通过用标准化接口堆叠软件组件来实现。 192.系统中的每层都可以将以下层视为抽象实体,并且(只要铺设ER满足其要求)不关心上层的使用方式。图层的界面可以是支持特定概念的互补函数,或支持相同抽象接口的不同底层底部的一系列可互换函数。 194.用C语言实现的系统,通常使用函数指针数组,表达式层接口的多路复用操作。 195.使用面向系统的语言使用虚拟方法直接表达多层接口。 196.系统可以使用不同的|组织各种坐标轴的唯一分层分解模型。 197.使用程序切片技术,您可以依赖于程序中数据和控制之间的关系。 198.在cOnCurrent系统,一个单独的系统组件充当集中管理器,负责的开始|停止并协调执行其他系统进程和任务的执行。 199.许多真实世界的系统将是每个人的长度。在处理此类系统时,不要寻找解包建筑地图;您应该放置不同的架构风格是独立的,但有关的实体定位|识别和理解。 200.状态变更图通常有助于阐明状态机的操作。 201.处理大量代码时,您可以了解代码分解成单独的单元。重要。 202.在大多数情况下,模块的物理边界是单个文件|在目录中组织多个文件或FIL的集合与统一的前缀。 203.Cblock,提供模块提供的标题文件,并提供提供相应实现的源文件。 204.对象的构造函数通常用于分配与对象相关的资源并初始化对象的状态。功能通常用于居住资源。 205.对象方法通常使用类字段来存储数据(例如查找表或词典)或用于操作的状态信息(例如,对每个对象的分配)。 206在设计良好的类中,所有字段都应宣布为私有,并通过公共访问方法提供对其的访问权限。 207.遇到朋友声明时,停止分析,查看课程包装的原因。 208.您可以使用运营商来增强A.特定类的Vailability,但使用运算符过载实现与与内部应用程序类型相关的所有功能相关的所有功能,是不合适的。 209.宏替换或编译期间的语言支持的函数未实现通用实现,这是操作期间数据元素的指针和功能的指针。性实施。 210.摘要数据类型通常用于封装公共数据组织方案(例如树本或堆栈),或用户隐藏数据类型的实现细节。 211.各种多样化:重用源代码或目标代码,组织模块集,组织和优化编译过程,或用于实现应用程序各种功能的按需负载s。 212.大分布式系统经常实现许多相互协作过程。 213.根据基于文本的数据存储库,您可以通过浏览其中存储的数据来解决其结构。 214.您可以通过查询数据字典中的表或使用数据库独占SQL命令来分析关系,例如show table数据库模式。 215.识别重型使用的架构元素后,您可以找到其原始描述,了解它正确使用的方式,也可能发生误用。 216.分析一些框架中的建立,最佳行动路线是来自研究框架本身。 217.读取代码时,不要期望太高,否则,你会失望的。 218.在学习一些基本设计模式之后,您将会找到您将更改您查看代码架构的方式:将扩展您的视图和词汇,以识别和描述许多普遍形式。 219一些经常使用的模式,但没有明确指出他们的名字,因为架构的检索通常是模式的形成。 220.请根据底层模式理解架构,即使没有代码清楚地指的模式。 221.大多数口译员遵循类似的处理框架来构建状态机,并且状态机的操作取决于解释器的当前状态程序指令和程序状态。 222.在大多数情况下,参考框仅指定应用程序域的概念结构。具体的实施没有必要遵循这种结构。 +++++++++++++++第10章:代码阅读工具+ +++++++++++++++ 223词汇工具可以有效地查找一些模型在大代码文件或多个文件。 224.使用程序编辑器和正则表达式查找命令,浏览庞大的源代码文件。 225.以只读模式浏览源代码文件。 226.使用正则表达式^函数名称来查找函数的定义。 227.使用正则表达式字符类,您可以找到名称以遵循特定模式的变量。 228.使用正则表达式来避免非活动匹配。 229.使用正则表达式符号-1。 *符号-2,您可以找到当前同一行的符号。 230.使用编辑设备的标签功能可快速识别偏信实体的Ition。 231.您可以创建一个具有特定标记的工具,以添加编辑器的浏览。 232.使用编辑器的源代码结构的鸟瞰图。 233。使用您的编辑器检测源代码中括号和卷曲括号的匹配。 234.使用Grep在多个文件中找到代码模式。 235.使用Grep定位符号的声明和应用程序|您无法准确表达要查找的内容,请使用关键字的Word Dricword查看程序的源代码.Looking。 237.过滤Grep生成的输出,将要查找的项目分开。 238.将输出传输到其他工具以自动化复杂的处理任务。 239.通过REBET传输Grep输出,重用代码查找结果。 240.通过选择输出李NE(Grep-V)与噪声模式不匹配,过滤错误的Grep输出。 241.使用FGREP在源代码中查找字符串列表。 242.查找注释或标识符时不敏感语言,您想要使用案例写不安全模式匹配(GREP -I)。 243.使用Grep-N命令行开关创建与给定的正则表达式检查表244匹配的文件和行号。您可以使用Diff比较文件或不同版本之间的差异。 245.运行Diff命令时,可以使用Diff-B,使文件比较算法忽略结束结束,用-W忽略所有空白区域的差异,使用-i比较文件对案件不敏感的文件。 246.不要担心创建自己的代码阅读工具。 247.什么时候构建您自己的代码阅读工具:利用现代快速原型语言能力;从简单开始,根据需要逐渐改善;使用代码词汇结构使用各种测试方法;允许一些输出噪声或静音(独立输出或缺失输出);使用其他工具准备输入,或执行输出后处理。 248.将编译器成为编译器警告的编译器,并仔细评估生成的结果。 249.使用C前身清除滥用预处理特征的这些计划。 250.彻底了解编译器如何处理特定的代码块,您需要查看生成的符号(汇编)代码。 251.通过分析相应目标文件中的符号,您可以清楚地了解输入和源文件的输出。 252.使用源代码浏览浏览大型代码集合和对象类型。 253.抵制根据您的编码规范美化外部代码的诱惑;不必要的安排更改将创建不同的代码,并妨碍工作组织。 254.美丽的打印程序编辑识别着色可以使程序源代码读取。 255.CDECL程序可以将无人居住的C和C ++类型声明转换为纯英语(反之亦然)。 256.实际操作程序经常可以更深刻地理解程序行动。 257.系统呼叫|事件和数据包跟踪程序可以增强对程序操作的理解。 258.执行解析器可以找出需要焦点优化的代码,验证OVErlay输入数据,以及分析算法的动作。 259.通过检查从未执行的代码行,您可以找到测试覆盖的弱点,并相应地更正测试数据。 260.要探讨程序动态操作的每个细节,您需要在调试器中工作。我觉得你觉得很难理解要打印到论文的代码。 262.您可以绘制一个插图来描绘代码的动作。 263.您可以尝试向您介绍您的阅读代码,请执行此操作
阅读源代码,它更容易查看,例如关键字,以蓝色表示,并根据规则的规则自动。至于源代码,它太多了,它很容易搜索程序,用它来编辑程序。还有一些编程的书籍来源代码。找到它太容易了。 UltraEdit是一个文本编辑器,最好的方法是读取源代码是对的。
如何阅读源代码,最近,我必须做源头阅读的东西,我觉得我的一些麻烦,我已经思考了。大型项目的源代码未读更详细的阅读。大项目,代码金额基本害怕。过度关注的细节,经常详细,并忽略整体框架。当您可以看到框架时,需要太多时间。因此,阅读一个大项目源代码,其目的是不欣赏代码细节,但在项目的整体框架的快速观点中:有这些模块,这些模块正在做(不关心如何做),模块通信机制可能是,然后考虑子模块,通常只要两级子模块就足够了。掌握这一点1或2天,它需要一直占据了这一点阅读大项目的源代码。因为一旦掌握了框架,您可以根据此框架实现此项目,但它与原始项目不同,但需求是相同的。在软件中,架构本质上。也许你期望阅读大项目源代码可以看到高质量的代码,但大型项目通常是团队的劳动力结果,而每个人的代码质量和低电平,单独在不同的时间。代码质量也不同。重要的是在散装源代码前面找到高质量,只是天堂。也许您必须从源代码中掌握技术细节,例如BSP或更改,那么最好的建议是找到相关的技术文档d文档中包含的示例代码。此示例代码通常不包括在内。任何干扰都是现有的,以证明这项技术。如果没有这样的事情,你只能从大项目的源代码中找出框架,你可以找到框架,你可以找到并找到表达技术的文件。但通常更为不幸,因为你通常会理解另一技术,以便理解这项技术。最后,谈谈如何阅读高质量源代码。什么是高质量的?是算法列表(例如某些O(1)的排序方法)?仍在采用极其深刻的语言功能来实现完美的表达(如灵活使用模板)?无论如何,最好的来源是一本书,如“STL详细”,或“内部XX“。本书的作者通常是这些高质量代码的作者,他将导致您探索这些来源背后的真相。
责任编辑(
于铭发)
以上就是关于**阅读源码,开源阅读**的全部内容,了解更多请关注蚂蚁资源网。
- H5支付系统
- 如何阅读开源代码,通过阅读开源代码,可以学习其中的框架和模式、代码技巧、算法等。但是经常有些人拿到开源代码以后不知道如何下手,这里分享一下我的一些经验。1.拿到代码以后编译运行它,了解它干什么的,实现了功能。2.从入口点开始阅读,按照流程,了解这个软件是怎么运行起来的。3.从整体上观察这个软件是有哪些模块组成的,最好能画一画图。4.修改软件的功能,并且能够调试它。不能仅仅停留在阅读代码上,一定要改代码,这样才能增加对开源代码的理解。5.做笔记,把这个开源代码实现的功能,实现方式、设计框架、模块组织、以及代码技巧等记录下来。以上,这些仅仅是我个人的经验,希望可以帮组到您。
- 2021-02-11 15:13:04
- 510167024
- 基本功什么的就不在此赘述,进入正题1.运行如果是一个工程的话,建议首先自己运行起来。只有运行起来看到效果之后才方便之后打断点DEBUG调试。过程之中也许涉及到各种环境啥的搭建,可能过程很苦逼,很耗耐心和意志。总之,没有什么困难能够阻碍你,如果你真的想要去做的话。2.入口点找到程序的入口点,方便跟进。算是毛线球暗藏的那个线头,找到之后只管拽就肯定能拆解。3.把对的改错,再想办法绕开个人没有实践过,不过日常开发过程中倒是经常碰到把对的改错了。纠错再改正的过程确实能够让自己对系统有更一步的了解,并且记忆深刻。4.模块化阅读将整体系统划分成不同的模块,再逐个解决。此处的意义不是具体一个项目功能模块的意思,而更倾向于在抽象一层理解,如网络层,缓存层,持久化层……5.个人化换了一个词表示“使用”,自己动手去使用,去实现,去架构。只有这么做了才能真正体会到自己哪里还不会。6.跟“人”沟通其意义很重要,书籍上确实东西能够起沉淀很多有意义的东东,但是很多实际使用过程中遇到的问题还需要向大神请教,途径包括公司资源,包括外网论坛博客啥的。以上主要是提供一个思路,经过自己这段时间的实践,发现确实能给黑暗中的自己一个摸索的方向,并且有一定的效果。另外还有几点,不知道插在哪一步进行说明,就没有总结在下面了多思考,为什么要写成这样,这样写有什么好处。注重Demo&Sample,很多使用上经验可以学习。阅读代码时最好分两遍进行阅读,第一遍主要熟悉代码结构,了解流程,划分模块;第二遍再注意细节,分模块的进行熟悉。一定要记住的是,回味,总结,沉淀。只有转化成为自己理解的东西之后,才能算学会了,时间才没白费。最后说一下,尽可能的在代码中找答案。跟别人沟通(当然除了跟代码作者本人沟通外)只能进行经验的交流,别人所输出的是经过他的理解和加工之后的,不见得一定是对的。
- 2021-02-11 15:13:04
- 亦心
- 现在国内有交易平台的,IT88168,A5等等,建议选择资质齐全的平台,不怕买到不满意的,有演示的地址好像IT88168是每个都必须有演示的。买方利益保障稍微好些。
- 2021-02-18 07:30:01