教你如何读懂源代码
java源码阅读技巧

java源码阅读技巧
阅读Java源码是每个Java程序员都应该具备的重要技能,以
下是一些阅读Java源码的技巧:
1. 理清目的,在阅读Java源码之前,首先要明确自己的阅读
目的是什么,是为了理解某个特定功能的实现,还是为了学习优秀
的编程实践和设计模式。
2. 选择合适的版本,Java的版本更新很快,不同版本的源码
可能会有一些差异,因此要根据自己的需要选择合适的版本进行阅读。
3. 从入口开始,通常情况下,阅读Java源码应该从入口开始,比如某个类或者某个方法,然后根据需要逐步深入。
4. 注重关键类和方法,Java源码非常庞大,不可能一下子全
部理解,因此要有选择地关注一些关键的类和方法,比如常用的集
合类、IO类等。
5. 结合文档,阅读Java源码时,要结合官方文档,了解每个
类和方法的作用和用法,这样能更好地理解源码的含义。
6. 调试和实践,阅读Java源码不仅仅是 passively reading,更重要的是要结合自己的实际项目进行调试和实践,这样能更深入
地理解源码的运行逻辑和细节。
7. 查阅其他资料,有时候Java源码本身并不能完全解答你的
疑惑,这时候可以查阅一些权威的书籍或者网络资料,加深自己的
理解。
总的来说,阅读Java源码需要耐心和细心,要有一颗渴望探索
的心态,同时要善于总结和归纳,不断地积累经验和知识。
希望以
上技巧对你有所帮助。
如何看懂源代码

如何看懂源代码我们在写程式时,有不少时间都是在看别人的代码。
例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。
六个章节:( 1 )读懂程式码,使心法皆为我所用。
( 2 )摸清架构,便可轻松掌握全貌。
( 3 )优质工具在手,读懂程式非难事。
( 4 )望文生义,进而推敲组件的作用。
( 5 )找到程式入口,再由上而下抽丝剥茧。
( 6 )阅读的乐趣,透过程式码认识作者。
阅读他人的程式码(1 )---读懂程式码,使心法皆为我所用程式码是别人写的,只有原作者才真的了解程式码的用途及涵义。
许多程式人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程式码。
但是,与其抗拒接收别人的程式码,不如彻底了解相关的语言和惯例,当成是培养自我实力的基石。
对大多数的程式人来说,撰写程式码或许是令人开心的一件事情,但我相信,有更多人视阅读他人所写成的程式码为畏途。
许多人宁可自己重新写过一遍程式码,也不愿意接收别人的程式码,进而修正错误,维护它们,甚至加强功能。
这其中的关键究竟在何处呢?若是一语道破,其实也很简单,程式码是别人写的,只有原作者才真的了解程式码的用途及涵义。
许多程式人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程式码。
这是来自于人类内心深处对于陌生事物的原始恐惧。
读懂别人写的程式码,让你收获满满不过,基于许多现实的原因,程式人时常受迫要去接收别人的程式码。
例如,同事离职了,必须接手他遗留下来的工作,也有可能你是刚进部门的菜鸟,而同事经验值够了,升级了,风水轮流转,一代菜鸟换菜鸟。
甚至,你的公司所承接的专案,必须接手或是整合客户前一个厂商所遗留下来的系统,你们手上只有那套系统的原始码(运气好时,还有数量不等的文件)。
诸如此类的故事,其实时常在程式人身边或身上持续上演着。
许多程式人都将接手他人的程式码,当做一件悲惨的事情。
电脑病毒源代码详细介绍

电脑病毒源代码详细介绍电脑病毒源代码(也称源程序),是指一系列人类可读的计算机语言指令。
下面由店铺给你做出详细的源代码详细介绍!希望对你有帮助!源代码详细介绍:在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。
计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
源代码主要功用有如下2种作用:1、生成目标代码2、即计算机可以识别的代码。
对软件进行说明,即对软件的编写进行说明。
为数不少的初学者,甚至少数有经验的程序员都忽视软件说明的编写,因为这部分虽然不会在生成的程序中直接显示,也不参与编译。
但是说明对软件的学习、分享、维护和软件复用都有巨大的好处。
因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。
需要指出的是,源代码的修改不能改变已经生成的目标代码。
如果需要目标代码做出相应的修改,必须重新编译。
熊猫烧香源代码:病毒源代码每句后有中文。
比如function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer;stdcall; external'Kernel32.dll'; //函数声明varTmpFile: string;Si:? ?STARTUPINFO;Pi:? ?PROCESS_INFORMATION;IsJap:? ?Boolean = False; //日文操作系统标记{ 判断是否为Win9x }function IsWin9x: Boolean;varVer: TOSVersionInfo;beginResult := False;Ver.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);if not GetVersionEx(Ver) thenExit;if (Ver.dwPlatformID = VER_PLATFORM_WIN32_WINDOWS) then //Win9xResult := True;end;{ 在流之间复制 }注:注意电脑防护!不可胡来,以电脑安全为主!。
源代码说明文档范文

源代码说明文档范文一、引言源代码是程序编写的文本文件。
它包含了程序的逻辑结构、功能实现和计算机命令等内容。
源代码说明文档是对源代码进行解释和说明的文档,旨在让用户、开发人员和审查人员能够更好地了解代码的结构、功能和实现细节。
本文档将详细介绍源代码的组成部分、结构、功能和使用方法,并提供示例代码和运行结果,以便读者更好地理解和使用源代码。
二、源代码结构源代码通常由多个文件组成,这些文件按照功能和关联进行组织。
常见的源代码结构包括以下几个部分:1.引用库:源代码中可能会引用其他已经存在的代码库,用于实现一些公共功能。
在本部分中,会列出所有用到的引用库,并说明其作用和使用方法。
3.主函数:源代码中通常有一个主函数,负责程序的入口和流程控制。
在本部分中,会详细说明主函数的结构和功能,并提供示例代码和运行结果。
4.功能函数:源代码中可能会包含一些功能函数,用于实现具体的功能模块或算法。
在本部分中,会说明每个功能函数的作用和使用方法,并提供示例代码和运行结果。
三、使用方法源代码的使用方法包括以下几个方面:1.环境配置:源代码可能需要在特定的编程环境中编译和运行,本部分会详细说明所需的编程环境和配置步骤,并提供相关的链接和资源。
2.编译和运行:本部分会说明如何编译源代码,并提供示例命令和运行结果。
3.参数设置:源代码可能会接受一些输入参数,本部分会说明每个参数的含义和设置方法。
4.输出结果:源代码可能会输出一些结果,本部分会说明每个输出结果的含义和格式。
四、示例代码下面是一个简单的示例代码,用于说明源代码的结构和使用方法:1.引用库本示例代码没有引用任何外部库。
2.定义和声明本示例代码定义了一个名为"HelloWorld"的类,其中包含一个静态函数"main"。
3.主函数在主函数中,首先输出了一条欢迎信息,然后打印了Hello World。
```public class HelloWorldpublic static void main(String[] args)System.out.println("Hello World");}```4.编译和运行本示例代码使用Java编程语言编写,可以使用命令行或集成开发环境(IDE)进行编译和运行。
代码走读——精选推荐

代码⾛读 ⼀、代码⾛读的内容 代码⾛读在软件开发过程⼗分的重要,能及时的发现并解决问题,那么代码⾛读有哪些内容呢? 1、检查是否符合编程规范:开发⼈员的编码风格是否规范,是否有注释,编写的代码能否让其他的编程⼈员阅读及维护,编程中的变量命名是否合适,是否缺少空格等。
2、寻找编译器中的设计陷阱:编程和设计过程中常见的和可防⽌的问题,能顺利通过编译,没有任何警告和错误信息,⽽且计算机能严格按照代码执⾏。
3、快速理解源代码,找出流程设计中的问题:将源代码编译成可执⾏程序,也可以阅读代码来了解程序的功能及其⼯作⽅式,还可以修改源代码来改变程序的功能从⽽找出逻辑上存在的问题,要求检查者要读懂代码,并且熟悉业务。
4、架构:包含类之间的关系,某个函数的实现。
如果不考虑后期维护可以忽略这层,或是有强⼤的架构设计师。
其实这类问题⽐逻辑更容易发现,例如某个类功能太多或函数if\switch太多等。
5、对原有代码的重构:重构就是在不破坏可观察功能的前提下,借由搬移、提炼、打散、凝聚……,改善事务的体质、强化当前的可读性、为将来的扩充性和维护性做准备、乃⾄于在过程中找出潜在的错误。
⼆、代码⾛读的⽅法 1、反复推敲 同⼀个逻辑可以有很多⽅式描述,但⽤哪个更好更合适可以在⾛读时细细体会,推敲的标准是1.⾼内聚低耦合 2.接⼝优先 3.好看好理解4.⾼效,运⾏速度快。
2、过段时间复读 ⽂章放段时间再拿出来看能发现很多问题,代码⼀样,⼀段时间后⼈的思维惯性没那么强了,改代码的抵触⼼理也会少很多,更容易发现问题。
除了开发⼈员需要进⾏代码⾛读外,⽩盒测试⼈员在进⾏测试时也需要简单的进⾏代码⾛读,从测试⾓度找出编码中存在的问题,及时的让开发⼈员改正,从⽽保证代码的⾼质量。
.net源码解析

.net源码解析在.NET中,源代码解析是一种重要的技术,用于理解、分析和修改程序的内部逻辑。
下面是一些解析.NET源代码的基本步骤:1.安装开发环境: 安装适用于.NET开发的集成开发环境(IDE),例如Visual Studio或Visual Studio Code。
这些工具可以提供代码编辑、编译、调试等功能。
2.获取源代码: 可以从GitHub、NuGet、开源项目网站等渠道获取.NET源代码。
也可以直接从自己的项目中获取源代码。
3.了解代码结构: 阅读并理解代码的组织结构。
通常,源代码会被组织成不同的文件,例如包含类型定义的.cs文件、包含资源或字符串的.resx文件等。
4.解析类和对象: .NET是面向对象的编程语言,因此需要理解如何解析类和对象。
每个类都有属性、方法、事件等成员,可以通过这些成员理解类的行为和功能。
5.分析方法和逻辑: 分析方法如何被调用、方法的参数是什么、方法的返回值是什么,以及方法的内部逻辑。
这可以帮助理解整个程序是如何运行的。
6.使用调试器: 使用IDE的调试器可以帮助理解代码的执行流程。
设置断点、单步执行、查看变量值等操作可以帮助理解代码的执行过程。
7.阅读文档和注释: 源代码中的注释和文档可以帮助理解代码的意图和功能。
此外,还可以查阅.NET的官方文档以获取更深入的理解。
8.使用静态分析工具: 有一些工具可以帮助自动分析代码,例如Roslyn分析器、SonarQube等。
这些工具可以提供关于代码质量、潜在错误等方面的反馈。
9.修改和重构: 在理解源代码的基础上,可以进行修改或重构以提高代码质量、修复错误或增加新功能。
10.测试: 对修改后的代码进行测试,确保没有引入新的问题或破坏原有的功能。
解析.NET源码是一个不断学习和探索的过程,需要耐心和深入的理解。
通过不断地实践,可以提高自己的编程技能和理解能力。
股票指标源码图形代码怎么看

股票指标源码图形代码怎么看
股票指标图形代码,通常是通过绘制股票指标的分析图表来展示股票数据的走势和趋势的。
要理解股票指标源码图形代码,可以从以下几个方面入手:
1. 确定图形库:首先要确定所使用的图形库,如matplotlib、plotly、echarts等。
不同的图形库有不同的使用方法和语法,
需要根据具体情况选择适合的图形库。
2. 数据处理:股票数据一般是通过API获取的,或者从本地
文件中读取的。
在绘制图形之前,需要对数据进行处理和预处理,以便合理地展示在图表上。
常见的数据处理操作包括数据清洗、数据筛选、数据转换等。
3. 绘制图形:根据所选择的图形库的语法和方法,使用合适的函数和参数绘制图形。
股票指标图形一般包括K线图、均线图、MACD图、RSI图等,可以通过传递不同的数据和参数来绘制不同的图形。
4. 设置图形样式:绘制完毕后,可以进一步设置图形的样式,包括标题、轴标签、图例、颜色、线型、图表大小等。
根据需求和用户体验,对图形进行美化和调整,使其更加直观和易读。
5. 显示图形:最后,使用图形库提供的方法将绘制好的图形显示出来,以便用户查看和分析。
可以选择将图形保存为图片或导出为其他格式,也可以直接在应用程序或网页中展示。
通过以上步骤,可以理解和阅读股票指标源码图形代码,并根据需要进行修改和定制,以满足个性化的需求。
python 源码详解

python 源码详解Python是一种高级编程语言,具有简洁易读的语法和强大的功能,适用于各种领域的开发。
本文将详细解析Python源码,包括其结构、特点以及一些常见的模块和函数。
一、Python源码结构Python的源码由C语言编写而成,它采用了面向对象的设计思想,整体结构清晰。
源码主要包括以下几个模块:1. Parser模块:负责解析Python源码,将其转换为抽象语法树(AST)。
2. Compiler模块:将AST编译为字节码文件,即.pyc文件。
3. Interpreter模块:解释执行字节码文件,将其转换为机器码并执行。
二、Python源码特点Python源码有以下几个特点:1. 简洁易读:Python源码采用了简洁的语法,可读性强,使得开发人员能够更加快速地理解和修改代码。
2. 动态类型:Python是一种动态类型语言,源码中的变量可以根据上下文自动推断类型,提高了开发效率。
3. 内置模块丰富:Python源码中包含了大量的内置模块,提供了各种功能的实现,例如字符串处理、文件操作等,减少了开发人员的工作量。
4. 强大的库支持:Python拥有庞大的第三方库,覆盖了各种领域,如科学计算、机器学习、Web开发等,使得开发人员能够快速构建复杂的应用。
三、常见的Python模块和函数1. os模块:提供了与操作系统交互的功能,如文件操作、进程管理等。
其中的os.path模块封装了与路径相关的操作,如路径拼接、文件名提取等。
2. sys模块:提供了对Python解释器的访问和控制,可以获取命令行参数、修改模块搜索路径等。
3. re模块:用于进行正则表达式匹配和替换,可以方便地对字符串进行复杂的模式匹配操作。
4. datetime模块:处理日期和时间相关的操作,如获取当前时间、日期格式化等。
5. math模块:提供了数学运算相关的函数,如平方根、对数、三角函数等。
6. random模块:生成随机数的函数,如生成随机整数、随机选择列表中的元素等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
分析源代码方法如何看懂源代码--(分析源代码方法>我们在写程序时,有不少时间都是在看别人的代码。
例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,就会“噜看噜苦<台语)”不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。
网路上有一篇关于分析看代码的方法,做为程序设计师的您,不妨参考看看,换个角度来分析。
也能更有效率的解读你想要的程序码片段。
六个章节:< 1 )读懂程序码,使心法皆为我所用。
< 2 )摸清架构,便可轻松掌握全貌。
< 3 )优质工具在手,读懂程序非难事。
< 4 )望文生义,进而推敲组件的作用。
< 5 )找到程序入口,再由上而下抽丝剥茧。
< 6 )阅读的乐趣,透过程序码认识作者。
阅读他人的程序码< 1 ) ---读懂程序码,使心法皆为我所用程序码是别人写的,只有原作者才真的了解程序码的用途及涵义。
许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序码。
但是,与其抗拒接收别人的程序码,不如彻底了解相关的语言和惯例,当成是培养自我实力的基石。
对大多数的程序人来说,撰写程序码或许是令人开心的一件事情,但我相信,有更多人视阅读他人所写成的程序码为畏途。
许多人宁可自己重新写过一遍程序码,也不愿意接收别人的程序码,进而修正错误,维护它们,甚至加强功能。
这其中的关键究竟在何处呢?若是一语道破,其实也很简单,程序码是别人写的,只有原作者才真的了解程序码的用途及涵义。
许多程序人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程序码。
这是来自于人类内心深处对于陌生事物的原始恐惧。
读懂别人写的程序码,让你收获满满不过,基于许多现实的原因,程序人时常受迫要去接收别人的程序码。
例如,同事离职了,必须接手他遗留下来的工作,也有可能你是刚进部门的菜鸟,而同事经验值够了,升级了,风水轮流转,一代菜鸟换菜鸟。
甚至,你的公司所承接的专案,必须接手或是整合客户前一个厂商所遗留下来的系统,你们手上只有那套系统的原始码<运气好时,还有数量不等的文件)。
诸如此类的故事,其实时常在程序人身边或身上持续上演着。
许多程序人都将接手他人的程序码,当做一件悲惨的事情。
每个人都不想接手别人所撰写的程序码,因为不想花时间去探索,宁可将生产力花在产生新的程序码,而不是耗费在了解这些程序码上。
很遗憾的是,上述的情况对程序人来说很难避免。
我们总是必须碰触到其他人所写成的程序码,甚至必须了解它,加以修改。
对于这项需求,在现今开放原始码的风气如此盛行的今日,正如之前的“程序设计2.0 ”文中所提到的,你可以透过开放原始码学习到新的技术,学习到高手的架构设计,大幅提高学习的效率及效果。
你甚至可以直接自开放原始码专案中抽取,提炼出自己所需的程序码,站在巨人的肩膀上,直接由彼端获得所需的生产力。
从这个观点来看,读懂别人所写的程序码,就不再只是从负面观点的“被迫接收” ,而是极具正面价值的“汲取养份。
”先了解系统架构与行为模式,再细读倘若撰写程序码是程序人的重要技艺之一,那么读懂别人的程序码,接着加以修改,也势必是另一个重要的技艺。
如果你不能熟悉这项工作,不仅在遭逢你所不愿面对的局面时,无法解决眼前接手他人程序码的难题,更重要的是,当你看着眼前现成的程序码,却不知如何从中撷取自己所需,导致最后只能入宝山空手回,望之兴叹。
接触他人的程序码,大致上可以分为三种程度:一,了解,二,修改,扩充,三,抽取,提炼。
了解别人的程序码是最基础的工作,倘若不能了解自己要处理的程序码,就甭论修改或扩充,更不可能去芜存菁,从中萃取出自己所需,回收再利用别人所撰写的程序码。
虽说是“阅读” ,但程序码并不像文章或小说一样,透过这种做法,便能够获得一定程度的了解。
阅读文章或小说时,几乎都是循序地阅读,你只消翻开第一页,一行行阅读下去即可。
但是,有许多程序人在试着阅读其他人的程序码时,却往往有不知如何读起的困难。
或许找到系统的第一页<也就是程序码执行的启始点)并不难,但是复杂度高的系统,有时十分庞大,有时千头万绪。
从程序码的启始点开始读起,一来要循序读完所有的程序码旷日费时,二来透过这种方式来了解系统,很难在脑中构建出系统的面貌,进而了解到系统真正的行为。
所以,阅读程序码的重点,不在于读完每一行程序码,而是在于有效率地透过探索及阅读,从而了解系统的架构及行为模式。
以便在你需要了解任何片段的细节实作时,能够很快在脑上对映到具体的程序码位置,直到那一刻,才是细读的时机。
熟悉沟通语言与惯例用语不论如何,有些基本的准备,是阅读他人程序码时必须要有的。
首先,你最好得了解程序码写成的程序语言。
想要读懂法文写成的小说,总不能连法文都不懂吧。
有些情况则很特殊。
我们虽然不懂该程序码撰写所用的语言,但是因为现代语言的高阶化,而且流行的程序语言多半都是血统相近,所以即使不那么熟悉,有时也可勉力为之。
除了认识所用语言之外,再来就是要先确认程序码所用的命名惯例<命名惯例)。
了解命名惯例很重要,不同的程序人或开发团队,差异可能很大。
这命名惯例涵盖的范围通常包括了变数的名称,函式的名称,类别<如果是物件导向的话)的名称,原始码档案,甚至是专案建构目录的名称。
倘若使用了像设计模式之类的方法,这些名称更有一些具体的表述方式。
命名惯例有点像是程序人在程序语言之上,另行建构的一组沟通行话。
程序人会透过共通约束,遵守的命名惯例,来表达一些较高阶的概念。
例如,有名的匈牙利式命名法,便将变数名称以属性,型别,说明合并在一起描述。
对程序人来说,这种方式能够提供更丰富的资讯,以了解该变数的作用及性质。
对程序码阅读来说,熟悉这个做法之所以重要,是因为当你了解整个系统所采用的惯例时,你便能试着以他们所共同操用的语汇来进行理解。
倘若,不能了解其所用的惯例,那么这些额外提供的资讯,就无法为你所用。
像以设计模式写成的程序码,同样处处充满着模式的名称,诸如:工厂,门面,代理等等。
以这些名称指涉的类别,也直接透过名称,表达了它们自身的作用。
对于懂得这命名惯例的读者来说,不需要深入探索,也能很快捕捉到这些类别的意义。
当你拿到一套必须阅读的程序码时,最好先取得命名惯例的说明文件。
然而,并不是每套程序码都附有此类的说明文件。
另一个方式,就是自己到程序码中,大略浏览一遍,有经验的程序人可以轻易发掘出该系统所用的命名惯例。
常见的命名方式不脱那几类,这时候经验就很重要,倘若你知道的惯例越多,就越能轻易识别他人所用的惯例。
如果运气很糟,程序码所用的惯例是前所未见的,那么你也得花点时间归纳,凭自己的力量找出这程序码命名上的规则。
掌握程序码撰写者的心态与习惯大多数的程序码,基本上都依循一致的命名惯例。
不过运气更差的时候,一套系统中可能会充斥着多套命名惯例。
这有可能是因为开发团队由多组人马所构成,每组人马都有不同的文化,而在专案开发管理又没有管控得宜所造成。
最糟的情况,程序码完全没有明显的惯例可言,这时候阅读的难度就更高了。
想要阅读程序码,得先试着体会程序码作者的“心”。
想要这么做,就得多了解对方所使用的语言,以及惯常运用的语汇。
在下一回中,我们将继续探讨阅读程序码的相关议题。
阅读他人的程序码< 2 ) -摸清架构,便可轻松掌握全貌在本文中,我们的重点放在:要了解一个系统,最好是采取由上至下的方式。
先试着捕捉系统架构性的观念,不要过早钻进细节,因为那通常对于你了解全貌,没有多大的帮助。
阅读程序码不需要从第一行读起,我们的目的并不是在于读遍每一段程序码。
基于许多原因,程序人需要阅读其他人所写成的程序码。
而对程序设计2.0时代的程序人来说,最正面的价值在于,能读懂别人程序的人,才有能力从中萃取自己所需的程序,借以提高生产力。
阅读程序码的目的,在于了解全貌而非细节想要读懂别人程序码的根本基础,便是了解对方所用的程序语言及命名惯例。
有了这个基础之后,才算是具备了基本的阅读能力。
正如我之前提到的─ ─想要读懂法文写成的小说,总不能连法文都不懂吧。
阅读程序码和阅读文学作品,都需要了解撰写所用的语言及作者习用的语汇。
但我们在阅读文学作品通常是采循序的方式,也就是从第一页开始,一行一行地读下去,依循作者为你铺陈的步调,逐渐进到他为你准备好的世界里。
阅读程序码却大大不同。
我们很少从第一行开始读起,因为除非它是很简单的单执行绪程序,否则很少这么做。
因为要是这么做,就很难了解整个系统的全貌。
是的,我们这边提到了一个重点,阅读程序码的目的在于了解系统的全貌,而不是在于只是为了地毯式的读遍每一段程序码。
就拿物件导向程序语言所写成的系统来说,整个系统被拆解,分析成为一个个独立的类别。
阅读个别类别的程序码,或许可以明白每项类别物件个别的行为。
但对于各类别物件之间如何交互影响,如何协同工作,又很容易陷入盲人摸象的困境。
这是因为各类别的程序码,只描述个别物件的行为,而片段的阅读就只能造就片面的认识。
由上而下厘清架构后,便可轻易理解组成关系如果你想要跳脱困境,不想浪费大量时间阅读程序码,却始终只能捕捉到对系统片段认识,就必须转换到另一种观点来看待系统。
从个别的类别行为着手,是由下至上<自下而上)的方法。
在阅读程序码时,却应该先采由上至下<自上而下)的方式。
对程序码的阅读来说,由上至下意谓着,你得先了解整个系统架构。
系统的架构是整个系统的骨干,支柱。
它表现出系统最突出的特征。
知道系统架构究竟属于那一种类型,通常大大有益于了解系统的个别组成之间的静态及动态关系。
有些系统因为所用的技术或框架的关系,决定了最上层的架构。
例如,采用的Java Servlet的/ JSP的技术的应用系统,最外层的架构便是以J2EE的<或起码的J2EE中的Web容器)为根本。
使用的Java Servlet的/ JSP的技术时,决定了某些组成之间的关系。
例如, Web容器依据web.x ml中的内容载入所有的Servlets ,听众,以及过滤器。
每当语境发生事件<例如初始化)时,它便会通知监听类别。
每当它收到来自客户端的请求时,便会依循设定的所有过滤器链,让每个过滤器都有机会检查并处理此一请求,最后再将请求导至用来处理该请求的Servlet的。
当我们明白某个系统采用这样的架构时,便可以很容易地知道各个组成之间的关系。
即使我们还不知道究竟有多少Servlets ,但我们会知道,每当收到一个请求时,总是会有个相对应的服务器来处理它。
当想要关注某个请求如何处理时,我应该去找出这个请求对应的服务器。
了解架构,必须要加上层次感同样的,以爪哇写成的网页应用程序中,也许会应用诸如Struts的之类的的MVC框架,以及像H ibernate的这样的资料存取框架。