




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
如何阅读较大型项目源码【摘要】上一篇我们讲到如何挖掘代码评审的最大价值,如何阅读较大型项目源码的能力不可缺少。本文从一次简单的实际操作来演示如何有效的阅读较大型项目源码。【关键词】阅读源码一、问题的提出如何有效的阅读较大型项目源码?二、解决思路通过记录一次活动来具体阐述。本文的主题是分析“研发软件自动化测试平台”的GUI的一次点击tree事件,看看源码是怎么样风云变幻、暗潮涌动的。三、实践情况点击3次按钮我们点击了3次按钮事件,“研发软件自动化测试平台”的GUI发生了如下的变化:第一次:第二次:第三次:从上面3次用户点击GUI,我们下一步来分析源码发生了什么及我们能从这里学习到什么东西。阅读源码流程1、尽量能运行代码这是比较简单的步骤,虽然配置工程会比较复杂,但是把工程跑起来了,你能学到很多。2、不要只看细节阅读代码第一步骤,首先浏览一下代码,熟悉不同代码段是做什么的,这会让我们了解代码的上层结构。找到切入点,查看代码在哪里分支了。不要在细节上花过多的时间,你后面随时可以回来查看。3、确信自己理解所有必需的结构如果碰到不熟悉的结构,你下一步就走不远,你应当深入查看,花一点时间来阅读代码。4、深入研究逐行查看函数或类。5、测试代码验证你理解代码了。比较奇特的代码,提取为单独的程序消化、吸收。步骤1:运行代码由于我们是测试平台科,自动化软件开发工程师,我们的工程从svn上下载下来,库的依赖、path路径全部自动获取(自动部署),所以一键就可以运行代码。此过程简单。步骤2:找切入点单击tree的事件,猜一下,跟tree有关,于是我们模糊搜索到文件=D:_pythonRF2RobotPlatformsvn_managerobotideuitree.py,事件= OnSelChanged在这里说明一下,切入点需要猜测,你可以根据标识符来定位,事件来定位,只要你能找到切入点,步骤2就算成功。步骤3:确信自己理解所有必需的结构如上,参考标记为2的地方,代码结构。步骤4:深入研究1有步骤3,我们得到切入点和代码结构/流程,在步骤4,我们关心点击3次,数据结构发生了哪些变化,及数据结构发生变化而附加了哪些操作。我们查看一下点击3次按钮的第一次的数据结构如下: 如上,我们关注“is_variable”,表名这次点击了“$OPERATOR”变量的操作。同理,3次点击的第二次点击数据结构如下:如上,红色部分,表名用户点击的是测试用例节点。同理,3次点击的第3次点击数据结构如下: 如上,红色圈标记的是用户点击了用户关键字的节点。步骤4:深入研究2深入研究步骤1是关键数据结构,下一步是关键函数。这里主要关心用户点击3种tree节点,GUI自动发生了一些变化,这些变化对应的源码在哪,以及触发原理是怎样的。我们知道单击tree节点,GUI自动发生了一些变化,对应代码的函数是publish。我们跟踪publish到这里,listener。跟进listener,我们找到GUI自动改变的第一个部分:_set_label如上,再次跟进listener函数,我们发现了GUI自动改变的其它部分:编辑框自动发生切换。总结:代码结构流程:步骤5:测试代码这里,为什么publisher.py-listener函数会正好跳转到GUI自动变化的地方呢?我们逆向思维,从mainframe.py-_set_label函数反过来查看。如上,反过来查找,发现了一个设计模式,于是我们可以进一步学习、测试这个模式。理解了这个设计模式,我们阅读代码便轻松多了。如下,附上观察者模式的简介:四、效果评价本文通过记录一次最平常的发生在身边的事件,详细分析了源码的实现情况,比较好的结合了用户容易使用和有价值的源码分析。让大家
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑工程类一级建造师机电工程-建设工程法规及相关知识(新)参考题库含答案解析(5套试卷)
- 2025年绿色生态草种研发种植投资及风险控制合同
- 2025年新型建筑钢材仓储及高效物流解决方案合同
- 跨界融合型网络大电影联合出品与推广合同
- 2025年度新能源汽车租赁与自驾游全方位保险合同
- 第三节 化学与环境教学设计-2025-2026学年初中化学京改版2013九年级下册-北京版2013
- 2025年度高性能陶瓷材料研发与全球采购供应合同
- 2025年学历类自考西方政治制度-学前儿童数学教育参考题库含答案解析(5套试卷)
- 2025年艺术品收藏与交易平台代支付服务合同范本
- 2025年度绿茶品牌授权种植园地承包合作协议
- 《人工智能基础与应用-(AIGC实战 慕课版)》全套教学课件
- 老年防诈骗知识讲座课件
- 兽药生产经营使用管理
- 护理安全警示:跌倒与坠床
- 2025年全家岗前培训考试题及答案
- 2025教育方针解读
- 多尺度有限元分析-深度研究
- 知识产权管理评审报告
- 医院员工手册培训
- 尿毒症伴心梗个案护理
- 《发热护理》课件
评论
0/150
提交评论