如何提高阅读源代码能力
- 格式:doc
- 大小:84.00 KB
- 文档页数:33
程序员的必备技能:代码阅读随着软件开发行业的快速发展,程序员们也越来越受到重视。
程序员既要会写代码,还要会读代码。
代码阅读是程序员的重要技能之一,也是程序员必备的技能之一。
为什么程序员需要代码阅读技能?1.提高代码质量程序员在阅读他人的代码时,可以从其他程序员的实践中学习。
通过学习其他人的代码,可以找出一些错误和不规范的代码。
同时,程序员还可以了解一些新技术和新的编码标准,进而提高他们个人的代码质量。
2.理解代码功能阅读代码是理解代码功能的最佳方式。
程序员可以通过代码阅读来学习如何实现某些功能,了解代码中的重要模块和算法。
在阅读过程中,程序员可以检查程序是否有问题或潜在的BUG,并找出解决问题的方法。
3.提高协作能力在团队中,程序员需要进行协作开发。
通过阅读其他程序员的代码,程序员可以更好地理解其他程序员的工作,减少交流障碍。
通过有效的交流和协作工作,可以提高开发效率并快速实现项目目标。
4.代码重构和维护当程序员需要修改代码时,他们需要阅读和了解代码才能进行修改。
代码阅读对于代码的重构和维护同样非常重要。
程序员通过阅读代码了解代码的逻辑,找到需要修改和改进的部分,并减少代码中bug 的数量。
代码阅读的重要性已经不言而喻,但仍有许多人不重视代码阅读技能。
下面是一些代码阅读的技巧和建议,帮助程序员提高他们的代码阅读能力。
1.熟悉编程语言和编码规范在进行代码阅读之前,程序员需要了解所使用的编程语言和编码规范。
了解编程语言的基础知识和术语,可以更快地理解代码。
另外,在了解编码规范后,程序员可以更好地理解和遵守这些规范,这对于代码阅读和代码质量都非常重要。
2.确定代码结构和架构在开始阅读代码之前,要先确定代码结构和架构。
程序员可以使用UML等工具来帮助他们理解代码的结构。
了解代码的结构和架构有助于程序员更好地理解代码的各个方面,包括算法和基本概念。
3.精细地阅读代码要阅读代码,程序员需要把握一定的技巧。
首先,要逐个对象和函数进行分析,了解它们的功能和作用。
程序员如何快速阅读源代码一1、阅读源代码的说明文档,比方本例中的README, 写的特别的具体,认真读过之后,在阅读程序的时候往往能够从README文件中找到相应的说明,从而简化了源程序的阅读工作。
2、假如源代码有文档名目,一般为doc或者docs,最好也在阅读源程序之前认真阅读,因为这些文档同样起了很好的说明注释作用。
3、在阅读程序的同时,最好能够把程序存入到cvs之类的版本操纵器中去,在需要的时候可以对源代码做一些修改试验,因为动手修改是比仅仅是阅读要好得多的读程序的方法。
在你修改运行程序的时候,可以从cvs中把原来的代码调出来与你改动的部分进行比较(diff指令), 可以看出一些源代码的优缺点并且能够实际的练习自己的编程技术。
4、从makefile文件入手,分析源代码的层次结构,找出哪个是主程序,哪些是函数包。
这对于快速把握程序结构有很大关心。
5、分析函数包(针对C程序),要留意哪些是全局函数,哪些是内部使用的函数,留意extern关键字。
对于变量,也需要同样留意。
先分析清晰内部函数,再来分析外部函数,因为内部函数确定是在外部函数中被调用的。
6、需要说明的是数据结构的重要性:对于一个C程序来说,全部的函数都是在操作同一些数据,而由于没有较好的封装性,这些数据可能出如今程序的任何地方,被任何函数修改,所以肯定要留意这些数据的定义和意义,也要留意是哪些函数在对它们进行操作,做了哪些转变。
7、从main函数入手,一步一步往下阅读,遇到可以推想出意思来的简洁的函数,可以跳过。
但是肯定要留意程序中使用的全局变量(假如是C程序),可以把关键的数据结构说明拷贝到一个文本编辑器中以便随时查找。
8、阅读程序的同时,要留意一些小工具的使用,能够提高速度,比方vi中的查找功能,模式匹配查找,做标记,还有grep,find这两个最强大最常用的文本搜寻工具的使用。
二1、弄清晰模块作用:能够一句话描述首先要知道模块是做什么的,有什么作用,能够用一句话描述就够了。
如何看懂源代码我们在写程式时,有不少时间都是在看别人的代码。
例如看小组的代码,看小组整合的守则,若一开始没规划怎么看,不管是参考也好,从开源抓下来研究也好,为了了解箇中含意,在有限的时间下,不免会对庞大的源代码解读感到压力。
六个章节:( 1 )读懂程式码,使心法皆为我所用。
( 2 )摸清架构,便可轻松掌握全貌。
( 3 )优质工具在手,读懂程式非难事。
( 4 )望文生义,进而推敲组件的作用。
( 5 )找到程式入口,再由上而下抽丝剥茧。
( 6 )阅读的乐趣,透过程式码认识作者。
阅读他人的程式码(1 )---读懂程式码,使心法皆为我所用程式码是别人写的,只有原作者才真的了解程式码的用途及涵义。
许多程式人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程式码。
但是,与其抗拒接收别人的程式码,不如彻底了解相关的语言和惯例,当成是培养自我实力的基石。
对大多数的程式人来说,撰写程式码或许是令人开心的一件事情,但我相信,有更多人视阅读他人所写成的程式码为畏途。
许多人宁可自己重新写过一遍程式码,也不愿意接收别人的程式码,进而修正错误,维护它们,甚至加强功能。
这其中的关键究竟在何处呢?若是一语道破,其实也很简单,程式码是别人写的,只有原作者才真的了解程式码的用途及涵义。
许多程式人心里都有一种不自觉的恐惧感,深怕被迫去碰触其他人所写的程式码。
这是来自于人类内心深处对于陌生事物的原始恐惧。
读懂别人写的程式码,让你收获满满不过,基于许多现实的原因,程式人时常受迫要去接收别人的程式码。
例如,同事离职了,必须接手他遗留下来的工作,也有可能你是刚进部门的菜鸟,而同事经验值够了,升级了,风水轮流转,一代菜鸟换菜鸟。
甚至,你的公司所承接的专案,必须接手或是整合客户前一个厂商所遗留下来的系统,你们手上只有那套系统的原始码(运气好时,还有数量不等的文件)。
诸如此类的故事,其实时常在程式人身边或身上持续上演着。
许多程式人都将接手他人的程式码,当做一件悲惨的事情。
C语言学习秘籍让你成为编程高手C语言是计算机科学领域中最常用和重要的编程语言之一。
掌握好C语言不仅可以让你在编程领域有很大的竞争优势,还能够更好地理解计算机底层运行原理。
本文将分享一些学习C语言的秘籍,帮助你成为一名编程高手。
1. 了解基本语法C语言的基本语法是编程学习的基础。
你需要掌握C语言的数据类型、变量、运算符、控制流等基本概念。
了解这些基础知识可以帮助你理解和编写简单的程序。
2. 深入学习指针指针是C语言中引人注目的特性之一。
熟练掌握指针的使用可以加强你对内存管理和数据结构的理解。
通过灵活运用指针,你可以实现更高效的算法和数据结构,提升程序的性能。
3. 掌握常用库函数C语言提供了许多常用的库函数,这些函数可以简化编程过程并提高代码的可读性。
例如,你可以使用<math.h>库中的数学函数来进行数值计算,使用<string.h>库中的字符串函数进行字符串操作。
熟悉这些常用库函数可以提高编程效率。
4. 大量练习编程编程是一门实践性很强的学科,光靠理论是远远不够的。
通过大量练习编写C语言程序,你可以提升自己的编程能力和解决问题的能力。
尽量选择多样化的练习题目,包括基础的算法题、数据结构实现以及项目实践等。
5. 阅读源代码阅读优秀的C语言源代码可以帮助你学习和理解编程技巧和设计模式。
选择一些开源的C语言项目,仔细阅读其源代码,并试着分析代码的结构和思路。
这样做可以培养你的代码质量意识和编程思维。
6. 调试和优化调试和优化是一个编程高手必备的技能。
学会使用调试工具和技巧,可以帮助你快速定位和解决代码中的问题。
此外,学会优化程序的性能也是非常重要的,可以通过选择合适的算法、数据结构优化和减少代码中的冗余,提高程序的运行效率。
7. 加入社区和团队加入C语言开发者的社区和团队,与其他编程高手互相交流和学习。
在这个过程中,你会遇到各种各样的问题和挑战,不断提升你的编程能力和解决问题的能力。
如何在短时间内掌握一门新的编程语言学习一门新的编程语言对许多人来说是一项具有挑战性的任务。
然而,如果我们能够采取一些有效的学习策略,我们就能够在短时间内掌握一门新的编程语言。
本文将为你提供一些实用的技巧和建议,以帮助你快速掌握一门新的编程语言。
1. 设定清晰目标在学习一门新的编程语言之前,我们应该设定明确的学习目标。
例如,我们可以决定掌握该语言的基本语法、了解常用的数据结构和算法等。
明确的目标可以帮助我们更好地组织学习内容,并保持学习的动力和方向。
2. 选择合适的学习资源选择合适的学习资源对于学习一门新的编程语言至关重要。
我们可以选择一些权威性的教材、网上教程或视频课程来学习。
此外,一些编程社区和论坛也是很好的学习资源,我们可以通过与其他学习者交流和分享经验来提高学习效果。
3. 学习基本语法和规则学习一门新的编程语言的首要任务是掌握其基本语法和规则。
这包括了关键字、语句、变量、数据类型等基本概念。
我们可以通过阅读相关资料和编写简单的示例代码来熟悉这些语法和规则。
在学习过程中,我们应该尝试通过动手实践来巩固所学知识。
4. 解决实际问题学习一门新的编程语言最好的方法之一是通过解决实际问题来应用所学知识。
我们可以选择一些具有挑战性的编程项目或练习题来实战自己的技能。
在解决问题的过程中,我们将不断学习和掌握新的语法和解决方案。
5. 阅读源代码阅读源代码是学习一门新的编程语言的另一种有效方法。
我们可以选择一些开源项目的源代码来学习。
通过阅读和理解别人的代码,我们可以学习到一些实践经验和技巧,并且加深对编程语言的理解。
6. 实践和复习学习一门新的编程语言需要大量的实践和复习。
我们应该不断地编写代码、实践所学知识,并不断地进行复习和总结。
通过不断地实践和复习,我们可以更好地巩固所学知识,并提高编程能力。
总结:学习一门新的编程语言需要时间和耐心,但通过采取一些有效的学习策略,我们可以在短时间内掌握它。
设定清晰的学习目标、选择合适的学习资源、学习基本语法和规则、解决实际问题、阅读源代码以及实践和复习都是帮助我们快速掌握一门新编程语言的重要步骤和方法。
如何提高软件开发人员的编码能力在当今快速发展的科技领域,软件开发人员的编码能力对于个人职业发展和团队项目的成功至关重要。
通过不断提升编码能力,开发人员可以更好地应对复杂的问题、提高代码质量、加快开发速度,并为公司创造更大的价值。
本文将探讨几个有效的方法,帮助软件开发人员提高他们的编码能力。
1. 深入学习编程语言和框架作为软件开发人员,熟练掌握所使用的编程语言和框架是至关重要的。
不仅要了解语法和基本概念,还需要深入理解其底层原理和设计思想。
通过阅读相关的书籍、参与在线课程或培训,开发人员可以不断扩展自己的知识面,了解最新的技术和最佳实践。
2. 参与开源项目参与开源项目是提高编码能力的一种有效方式。
通过与其他开发人员合作,可以学习到不同的编码风格和技术思路。
同时,开源项目也提供了一个实践和展示自己技能的平台。
通过提交代码、解决问题和参与讨论,开发人员可以提升自己的编码能力和团队合作能力。
3. 阅读优秀的源代码阅读优秀的源代码是学习编码的重要途径之一。
通过阅读开源项目或优秀软件的源代码,开发人员可以学习到其他人的设计思路、代码结构和优秀的编码实践。
同时,也可以借鉴其中的技术解决方案和算法思想,提高自己的编码水平。
4. 不断练习和实践编码能力的提高需要不断的练习和实践。
开发人员可以通过解决编程难题、参与编程竞赛或开发个人项目来提高自己的编码能力。
在实践中,开发人员可以面对各种问题和挑战,锻炼自己的解决问题的能力和代码调试的技巧。
5. 与他人交流和合作与他人交流和合作是提高编码能力的重要环节。
通过与其他开发人员讨论技术问题、分享经验和互相学习,可以拓宽自己的视野,了解不同的编码思路和解决方案。
同时,与其他开发人员合作完成项目也可以提高团队合作和沟通能力。
6. 持续学习和关注行业动态软件开发行业日新月异,新技术和新框架层出不穷。
为了跟上行业的发展,软件开发人员需要保持持续学习的态度,并关注行业的最新动态。
通过参加技术研讨会、阅读技术博客和参与在线社区,开发人员可以及时了解到新技术和最佳实践,进一步提高自己的编码能力。
考虑这样一些场景:•C a se1: 你还在读书,照着教程,照着例子,学习编程。
刚开始,大概率是先读别人的代码,理解别人的代码,而非一上来,就开始写。
这是我Y Y的一个学写代码的学习模型,所以读了,理解了,在自己就可以发挥了,然后书本上、他人的知识,就流进了自己的脑瓜了。
•C a se2: 一个职场新人,一进公司,就加入一个项目组,那项目代码真是海了去了!然后老大可能给你一个小小的活,在现有基础上,添加一个小功能。
项目经验少的童鞋,一下就傻眼了,特么的,这代码这么多行,文件几百上千!该从何入手呢?别说改了,看都看不懂!完了,试用期是不是就要被干掉?!0•C a se 3:你进了一个小公司,技术管理混乱,前任已闪人,你受命接任一个一坨翔一样的项目,那代码写的真是云里雾里,工期又紧,老板又逼着出货,怎么办?闪人?可是下家会更好么?跳槽往往是从一个坑里,跳到另一个坑里。
所以读吧,总是要读的。
0•C a se n: 0学校往往教授的是如何写代码,可能从没有教如何读代码。
然而,理想很丰满,现实很骨感!工作中,你写代码的时间可能只占工作时间很少很少的一部分,大部分时间你可能都是在阅读已有的代码,当然除非这个项目从0到1都是你一个人干,可即便是自己写代码,也是渐进增长、不断迭代的,也需要不断反复阅读自己写的代码。
再者,编程与写文章,有异曲同工之处。
编程与写作相似之处,都是用语言表达写作者的想法。
对于如何提升写作,古人曾讲:熟读唐诗三百首,不会作诗也会吟。
回想学生时代,老师也常说:读书破万卷,下笔如有神!强调写作需要大量阅读,读的多了,写作能力也会相应提升。
阅读之于写作,相辅相成,互为促进。
那么大量阅读别人的代码,也能提升自己的编程水平。
阅读代码,个人觉得会有这样些好处:优秀的源码,就如传世佳作一样,值得反复揣摩,细细品味。
其编写技巧、设计范式、架构思想,都具有极大的学习借鉴价值。
比如一些优秀的开源项目:Li n u x内核、l wI P、u-b o o t等等。
如何通过阅读源代码来提升编程技能通过阅读源代码来提升编程技能源代码是程序编写的原始版本,它被翻译成可执行文件或二进制文件,从而实现不同软件和应用的功能。
阅读源代码是提高编程技能和理解代码的重要方法之一。
本文将介绍如何通过阅读源代码来提升编程技能的几个方面。
一、选择适合自己的项目及语言1.了解自己的编程水平和兴趣:选择适合自己水平和兴趣的项目,能更好地激发学习的动力。
2.选择常用的编程语言:例如Python,Java,C++等。
这些语言都有广泛的应用,并且有大量的优秀源代码可供学习。
二、充分了解项目的背景和功能1.查找项目的官方文档和相关资料:了解项目的背景和功能,帮助你对源代码的理解。
2.了解项目的架构和设计思想:阅读源代码前,先了解项目的整体结构和设计思想,有助于理解代码的组织和模块之间的关系。
三、从整体到细节逐步阅读源代码1.浏览整个项目的目录结构:先大致了解项目的目录结构和各个文件的作用,有助于了解代码的组织方式。
2.从主文件开始阅读:找到项目的主文件,从这里开始逐个追踪调用关系和函数实现。
3.关注核心功能和关键代码:在阅读源代码时,重点关注项目的核心功能和关键代码部分,深入理解其实现原理。
四、与他人交流与探讨1.参与开源社区或论坛:多与其他开发者交流,分享自己的阅读心得和问题,从中获得反馈和指导。
2.借鉴他人的优秀代码:在开源社区中,有很多优秀的开源项目和源代码可供学习。
通过阅读这些代码,借鉴其中的设计思想和优秀实践方式。
五、练习并输出自己的代码1.将所学应用到实践中:通过阅读源代码,将所学知识应用到自己的项目中,不断练习并提升编程能力。
2.输出自己的优秀源代码:通过编写高质量的源代码,并将其开源共享,从中获得反馈和改进,不断提高自己的编码能力。
六、利用工具和资源辅助阅读源代码1.使用调试器:通过调试器可以逐步跟踪代码执行过程,观察变量的值和函数的调用过程,帮助理解程序的执行流程。
2.使用代码注释和文档生成工具:通过添加注释和生成文档,提高自己代码的可读性,便于他人理解和维护。
如何提高编程技能的24个实用方法编程技能的提高是一个不断学习和实践的过程,需要掌握一些实用方法。
下面是24个提高编程技能的实用方法:1.阅读优秀的源代码:通过阅读优秀的源代码,可以学习到一些优秀的编程技巧和设计思路。
2.刷题:刷题是提高编程能力的有效途径,可以通过刷题来巩固和拓宽自己的算法和数据结构知识。
3.学习新的编程语言:学习新的编程语言可以拓宽自己的思维方式,并且提升自己的编程能力。
4.参与开源项目:参与开源项目不仅可以锻炼自己的编程能力,还可以学习到开源社区的协作方式和工作流程。
5.挑战自己:定期挑战自己编程技能的极限,可以提高自己的解决问题的能力和创新能力。
6.阅读技术文档和书籍:通过阅读技术文档和书籍,可以学习到一些专业知识和最佳实践。
7.参加编程竞赛:参加编程竞赛不仅可以锻炼自己的编程能力,还可以学习到其他选手的优秀思路和解决方法。
8.编写技术博客:通过编写技术博客,可以加深自己对于某个技术的理解,并且提高自己的表达能力。
9.加入技术社区:加入技术社区可以与其他开发者交流和学习,了解行业动态和最新技术。
10.实践项目:通过实践项目,可以将理论知识转化为实际应用,并且锻炼自己的解决问题的能力。
11.反思和总结:每当遇到问题或者完成一个项目后,及时反思和总结经验教训,并且找到改进的方法。
12.与他人合作:与他人合作可以学习到其他人的编程技巧和经验,提升自己的团队合作能力。
13.寻找导师:寻找一个经验丰富的导师指导自己的学习和技能提升,可以加快自己的成长速度。
14.培养解决问题的能力:不仅要学会编程,还要培养解决问题的能力,包括分析问题、定位问题和解决问题的能力。
15.关注最新技术趋势:关注最新的技术趋势和发展方向,学习和掌握新的技术,保持自己的竞争力。
16.参加技术研讨会和培训课程:参加技术研讨会和培训课程可以学习到最新的技术知识和行业标准。
17.学习调试技巧:学会排查和修复代码中的bug,提高自己的调试技巧和排错能力。
如何提高阅读源代码能力来源: ChinaUnix博客日期:2005.10.08 07:54(共有0条评论) 我要评论本文来自ChinaUnix博客,如果查看原文请点:/u/9765/showart_50767.html在这里准备用一个例子来写一下如何阅读源代码,分享一些经验,算是抛砖引玉吧!正文:由于工作的关系,我常常需要读一些源代码,并在上面做一些修改并且拿来使用,或者是借鉴其中的某些部分。
可以说,open source对于程序员来说,是很有意义的事情。
根据我的经验,读源代码,至少有3个好处。
第一个好处是可以学习到很多编程的方法,看好的源代码,对于提高自己的编程水平,比自己写源代码的帮助更大。
当然不是说不用自己写,而是说,自己写代码的同时,可以从别人写的好的源代码中间学习到更多的编程方法和技巧。
第二个好处是,可以提高自己把握大规模源代码的能力。
一个比较大型的程序,往往都是经过了很多个版本很长的时间,有很多人参与开发,修正错误,添加功能而发展起来的。
所以往往源代码的规模都比较大,少则10-100多k, 多的有好几十个MB. 在阅读大量源代码的时候,能够提高自己对大的软件的把握能力,快速了解脉络,熟悉细节,不仅仅是编程技巧,还能在程序的架构,设计方面提高自己的能力。
(这里说一句题外话,>这本书相信很多人都看过,而且很多人对它推崇备至,奉为经典。
现在也出了不少书,都是冠以"设计模式"这一名称。
在书中就提到,设计模式并不是一本教材,不是教你如何去编程序,而是把平时编程中一些固定的模式记录下来,加以不断的测试和改进,分发给广大程序员的一些经验之谈。
我在看这本书的时候,有一些地方一些设计方法往往让我有似曾相识的感觉,另外一些则是我以前就常常用到的。
而这些经验的获得,一部分得益于自己的编码过程,另外一个很重要的来源就是阅读别人写的源代码。
)阅读源代码第三个好处,就是获得一些好的思想。
比如,有很多人在开始一个软件项目之前都喜欢到上去找一下,是否有人以前做过相同或者相似的软件,如果有,则拿下来读一读,可以使自己对这个软件项目有更多更深的认识。
我以前曾经想找一本关于如何阅读源代码的书来看看,却没有找到。
相反,倒是找到了不少分析源代码的书,比如Linux kernel, Apache source, 等等。
所以我想,为什么不自己来写下一些经验和大家交流呢?(当然不是写书,没有那个能力也没有那个时间。
)所以在这里我准备用一个例子来写一下如何阅读源代码,分享一些经验,算是抛砖引玉吧!我找的例子是一个统计日志的工具,webalizer. (这个工具我以前用过,似乎记得以前的版本是用perl 写的,不知道现在为什么作者把它完全修改成了C,可能是为了效率,也可能根本就是我记错了。
)之所以选择这个软件来作为例子,一方面是因为它是用C写的,流程比较简单,没有C++的程序那么多的枝节,而且软件功能不算复杂,代码规模不大,能够在一篇文章的篇幅里面讲完; 另外一个方面是因为恰巧前段时间我因为工作的关系把它拿来修改了一下,刚看过,还没有忘记。
:-)我采用的例子是webalizer2.01-09, 也可以到它的网站/webalizer/下载最新的版本。
这是一个用C写的,处理文本文件(简单的说是这样,实际上它支持三种日志文本格式:CLF, FTP, SQUID), 并且用html的方式输出结果。
读者可以自己去下载它的源代码包,并一边读文章,一边看程序。
解压缩它的tar包(我download的是它的源代码tar包),在文件目录中看到这样的结果:$ lsaclocal.m4 dns_resolv.c lang output.h webalizer.1CHANGES dns_resolv.h lang.h parser.c webalizer.cconfigure graphs.c linklist.c parser.h webalizer.hconfigure.in graphs.h linklist.h preserve.c webalizer_lang.hCOPYING hashtab.c Makefile.in preserve.h webalizer.LSMCopyright hashtab.h Makefile.std README webalizer.pngcountry-codes.txt INSTALL msfree.png README.FIRSTDNS.README install-sh output.c sample.conf首先,我阅读了它的README(这是很重要的一个环节), 大体了解了软件的功能,历史状况,修改日志,安装方法等等。
然后是安装并且按照说明中的缺省方式来运行它,看看它的输出结果。
(安装比较简单,因为它带了一个configure, 在没有特殊情况出现的时候,简单的./configure, make, make install 就可以安装好。
)然后就是阅读源代码了。
我从makefile开始入手(我觉得这是了解一个软件的最好的方法)在makefile开头,有这些内容:prefix = /usr/localexec_prefix = ${prefix}BINDIR = ${exec_prefix}/binMANDIR = ${prefix}/man/man1ETCDIR = /etcCC = gccCFLAGS = -Wall -O2LIBS = -lgd -lpng -lz -lmDEFS = -DETCDIR="/etc" -DHAVE_GETOPT_H=1 -DHAVE_MATH_H=1LDFLAGS=INSTALL= /usr/bin/install -cINSTALL_PROGRAM=${INSTALL}INSTALL_DATA=${INSTALL} -m 644# where are the GD header files?GDLIB=/usr/include这些定义了安装的路径,执行程序的安装路径,编译器,配置文件的安装路径,编译的选项,安装程序,安装程序的选项等等。
要注意的是,这些并不是软件的作者写的,而是./configure的输出结果。
呵呵. :-)下面才是主题内容,也是我们关心的。
# Shouldn't have to touch below here!all: webalizerwebalizer: webalizer.o webalizer.h hashtab.o hashtab.hlinklist.o linklist.h preserve.o preserve.hdns_resolv.o dns_resolv.h parser.o parser.houtput.o output.h graphs.o graphs.h lang.hwebalizer_lang.h$(CC) ${LDFLAGS} -o webalizer webalizer.o hashtab.o linklist.o preserve.o parser.o output.o dns_resolv.o graphs.o ${LIBS}rm -f webazolverln -s webalizer webazolverwebalizer.o: webalizer.c webalizer.h parser.h output.h preserve.hgraphs.h dns_resolv.h webalizer_lang.h$(CC) ${CFLAGS} ${DEFS} -c webalizer.cparser.o: parser.c parser.h webalizer.h lang.h$(CC) ${CFLAGS} ${DEFS} -c parser.chashtab.o: hashtab.c hashtab.h dns_resolv.h webalizer.h lang.h$(CC) ${CFLAGS} ${DEFS} -c hashtab.clinklist.o: linklist.c linklist.h webalizer.h lang.h$(CC) ${CFLAGS} ${DEFS} -c linklist.coutput.o: output.c output.h webalizer.h preserve.hhashtab.h graphs.h lang.h$(CC) ${CFLAGS} ${DEFS} -c output.cpreserve.o: preserve.c preserve.h webalizer.h parser.hhashtab.h graphs.h lang.h$(CC) ${CFLAGS} ${DEFS} -c preserve.cdns_resolv.o: dns_resolv.c dns_resolv.h lang.h webalizer.h$(CC) ${CFLAGS} ${DEFS} -c dns_resolv.cgraphs.o: graphs.c graphs.h webalizer.h lang.h$(CC) ${CFLAGS} ${DEFS} -I${GDLIB} -c graphs.c好了,不用再往下看了,这些就已经足够了。
从这里我们可以看到这个软件的几个源代码文件和他们的结构。
webalizer.c是主程序所在的文件,其他的是一些辅助程序模块。
对比一下目录里面的文件,$ ls *.c *.hdns_resolv.c graphs.h lang.h output.c parser.h webalizer.cdns_resolv.h hashtab.c linklist.c output.h preserve.c webalizer.hgraphs.c hashtab.h linklist.h parser.c preserve.h webalizer_lang.h于是,让我们从webalizer.c开始吧。
作为一个C程序,在头文件里面,和C文件里面定义的extern变量,结构等等肯定不会少,但是,单独看这些东西我们不可能对这个程序有什么认识。
所以,从main函数入手,逐步分析,在需要的时候再回头来看这些数据结构定义才是好的方法。
(顺便说一句,Visual C++, 等windows下的IDE工具提供了很方便的方法来获取函数列表,C++的类列表以及资源文件,对于阅读源代码很有帮助。
Unix/Linux 也有这些工具,但是,我们在这里暂时不说,而只是通过最简单的文本编辑器vi来讲)。