问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何读项目代码

发布网友 发布时间:2022-04-24 12:30

我来回答

1个回答

热心网友 时间:2023-10-12 22:24

(再没有文档这个总是有的吧?哪怕是个代号)2.这个项目的性质3.源代码的规模有多少行(其中有多少行是注释),总共有多少个文件(每一类文件分别有多少个,每个文件是多少行)如果是面向对象的,有多少个class,如果是面向过程的有多少个function4.功能的详细整理功能列表函数名 功能 功能描述5.功能模块之间的关系(哪怕没有注释,按名称,调用关系一定能整理清楚)如果你把我上面列的5点搞清楚了,再来抱怨,我想应该是下面这个样子:老大给了我一个项目源码让我看,注释都没有,是一个超级留言本,总共有10万行代码,就两个文件,函数不到10个,功能就是注册和留言,连修改删除功能都没有,大家说我看这样的代码有意思吗?我是不是还要待在这里?如果你完成了我上面说的5步,你仍然觉得没什么值得学的,没有什么需要做的,说明你不适合干编程这一行。下边呢就具体的介绍一下心得。当我们学习程序编码时,首先会看一些程序代码例子,然后学例子去修改编写代码;当我们刚进入一个公司,公司会把要维护修改的项目分给我们,让我们修改维护,要想修改编写,首先要读懂项目主要程序;当我们去看一些优秀的开源项目,想从中学习这些项目的设计思想时,我们也要去看项目代码…如此等等,可以说读代码是为了写代码,写出非常优秀的代码。因此对于程序开发人员来说,快速阅读项目代码是一个必需要掌握的能力。前段时间,我接手了一个php做的系统,公司要求我参阅这个项目重新做一个Demo,在读这个系统代码时,我积累了一些关于读项目代码的心得体会,主要内容如下。 清楚主要功能 想一想如何实现 首先要清楚项目的主要功能,知道它主要是干什么用的,才可能从总体上去把握项目。可以通过向公司同事或其他人请教、或查阅项目需求分析文档,概要设计文档来快速获得项目主要功能,如果没有这些文档,可以在网上搜索项目的功能,如果以上这些都没有条件的话,那只有把此项目运行起来,通过自己的实际操作来得到项目的主要功能了。清楚项目主要功能后,自己首先想一想,如果让我做,该如果去实现呢,这样能够得到对自己来说的技术难点,读源代码时会更留意这些内容,效率也就提高上去了。 运行项目 找到实现主要功能的代码 清楚主要功能以后,就可以去读实现主要功能的代码了,当然还需要找到这些功能是在那些文件,那些类来实现的。为了找到实现类,我们还要把项目运行起来,依据项目类型及特点,通过不同方法找到实现类代码。把这些文件记录下来,随后只需重点看这些文件中的代码,就可以了。 依据代码的类层次关系 了解项目体系结构 通过其他一些工具把这些代码的类图导出来,比如(rational rose或powerdesigner的逆向工程),如果是Java项目还可以导出Javadoc。依据导出的内容,了解每一个主要实现类的大致功能,及这些类之间相互关系,这样也就清楚了项目的类层次结构,即项目体系结构。 清楚项目主要实现技术 依据导出的类图和对项目了解的疑点,如果是技术方面,比如自己不知道或不清楚该怎么实现某种功能,那就赶紧参照源代码,找到项目主要实现技术。如果对此技术不熟悉,那就快快在Bai或Google上面搜索一把,ok,一定会很多关于此技术的资料等着你去看呢,抓紧阅读这些资料,尽快掌握此技术的内容。 调试主要实现类,从中了解实现细节 了解了项目的体系结构,并清除项目主要实现技术后,下一步就是看实现细节了。看实现细节,也是从整体到局部,从看各个方法声明出发,在逐步看每个方法体。当然没有必要每个方法都要去一行一行看,只需重点看与实现此类主要功能的核心方法。对某些代码看过一两编后,还是很迷茫的话,没有关系,调试一把,看看它终究是有何作用。调试有很多中,最终要的是一步一步跟踪,但是有些语言编写的代码很难用这种方式做,比如(javascript或applet),那就把一些重要的变量输出出来。了解了主要功能代码的主要方法后,可以基本上说我们已经看懂了项目的代码,把握了项目的整体架构。 修改代码来满足自己需求 看懂了项目代码,最后一步就是根据需要,来修改项目代码,满目我们的需要了。以上就是我在看项目代码中的总结,当然,如果项目非常功能很少,没有使用什么复杂技术的话,了解体系结构和清楚项目主要实现技术就可以跳过了,根据实际,直接需要去看源代码就可以了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 19、总结JavaScript中的运算符有哪些类别 大哥 大姐 求一篇 学计算机新技术的感想作文 我们听的是演讲 == 800... Javascript 中 null,NaN和undefined的区别总结 如何学习JSP JavaScript都有些什么运算符?有什么要特别注意的?我是个新手,哪个大牛... 女性的身材标准该被定义吗? 对计算机的心得体会 舞蹈生的标准身材和身高都是多少? 关于Javascript中defer和async的区别总结 168女生的标准身材比例? 学习HTML,CSS和JavaScript的心得体会 女性标准身材表 女生标准身材各部位对照表 女生标准身材比例是多少? 女人的标准 身材 求女生标准身材的三围,腿围。 (最好有一个表) 女人的十种体型 女人标准体型图片 什么样体型的女人 华为NOVA6的充电速度? 场内,场外股票期权有何不同 股指期权和etf期权哪个好 可以不用正则表达式吗?c c++ vb net c# Jquery和Js获得元素标签名称的方法总结 两狗对视表情怎么回复 两狗对视的表情包是什么意思? 女朋友常常发二个小狗头表情是什么意思? 男生发“两狗对视”表情包是什么意思? 和男生聊天,男生发俩只狗狗表情是? 两只柴犬抱在一起的表情包是什么意思? 美女发两个狗屁股动态表情是啥子意思? 男孩给你发表情包是两只狗蹭屁股什么意思? 两个不一样狗表情出来的什么相机软件 表情包狗狗比心两个字是什么意思? 新浪微博,有两个猫和狗的头像表情,带表什么,猫和狗带表什么,我不懂 怎样关闭防沉迷? 王者荣耀怎么关防沉迷 怎么解除微信防沉迷? 怎么取消防沉迷模式啊? ems 是不是全国各地都可以到达? 怎么关闭防沉迷 如何取消防沉迷?