`

你该如何去阅读拥有海量代码行的项目

 
阅读更多

如果你是一个拥有多年经验的程序员,一定会碰到几十万代码行的项目。如何去理解和读懂这些代码,其实有其技巧。学会这些,你距离项目经理的路会更近一些。


导读

换 过几次工作的程序员一般都比较头疼,新到一个公司,会给你一个项目,别人以前写的,40-50万行代码,并且代码没按照一定的规范去写,因为这个 代码来自N个人,一看代码我就头大,我曾经就做过这样的事情,开始的时候也很抓狂,但是慢慢的我认为我找到里面的窍门了,一下算是我给大家提供的一个思路 吧。(我之前跟的那个项目是 B/S的,所以是针对B/S写的)

1.看操作说明书

目的:这个项目是干什么的?

任 何一个项目都有他要实现的功能,而操作说明书就是告诉你怎么去用它,怎么去操作这些代码,这些代码提供了一个怎样的服务。如果你进到一个比较正规 的公司的话,会有测试的,有些操作你操作不了,可以求助测试人员,以为他们是公司里面最熟悉这些操作的。尽可能熟练的去操作这些功能。

小结:我在做开发的时候,功能比较多,所以只看了一部分功能,原因是我没时间,所以自己在看这部分的时候,如果时间不够,大体上把握即可。

2.看框架

目的:这个项目是什么架构?

任 何一个项目都有自己的架构,自己的模式,自己尽量去看代码结构,有可能你感觉很难,因为代码太多了,所以不要气馁,要给自己心里暗示“自己是可以 的”。小结:如果看不懂也没关系,可以先做下面的, 我之前所看的代码,我根本看不懂,后来很长一段时间,同事告诉我“软件框架”,任何模式都可以很好的进行开发。看的时候肯定会遇到自己没见过的代码,不用 去管它。

3.跟代码【核心】

目的:每个方法是干什么的?先执行那个?在执行那个?

找 一个小的模块,这把片代码彻底看懂。这个时候你需要的就是跟代码了,打断点;如果是B/S的,你可以再加脚本调试debugger。告诉你一个小 窍门:当跟代码的时候,旁边放一张纸,遇到主要的方法,要记下来,从头到尾记下来,等跟完了自己可以拿这张纸进行复述。这样这个功能大概怎么跑的你就记下 了。跟的时候遇到的方法一定要记下来,但是跟的时候一定不要去查,等跟完了在去查。如果是由于自己知识点的原因,应马上彻底补上来。

小结:这个是核心,一般人只是跟不记,等一下自己就不知道自己会那些,不会那些,大概怎么跑的都不知道了。所以一定要记。比如我之前开发全部是用户控件,很抓狂,你根本不知道那个方法先加载,那个页面需要参数,但是你把它画出来了,一点点看下来了,感觉很有意思。

4.画图

目的:如果一个页面有2个用户控件你是需要画图的,这样做可以让你一眼看到页面的布局,防止你下次看代码的时候,找不到那是那。那个页面调用哪个方法最好也写上。当我在拿到这张图的时候我可以复述多少?当你在修BUG的时候可以用这张图。

当你跟完代码之后,你肯定知道哪里是哪里了,这时候你就用纸把这个页面的图片画下来,最好是不看代码画,等画完了,在看代码,看自己是否真的了解逻辑来。

小结:这一步跟第三步可以同时进行。 如果你跟感觉很吃力,可以多跟几次,重复3,4步,一般跟3遍就大概掌握这片代码的逻辑。

我现在面对的问题是:大的代码结构我都能看懂,但是我不知道业务,那就的好好听了,用眼睛用心去听就可以了,没有别的办法了。

以上是本人在看代码的时候一些总结出来的思路,大家谁有好的方案可以那出来一起分享。


原文链接: http://www.cnblogs.com/muer/archive/2011/05/02/2034448.html

分享到:
评论

相关推荐

    本人的spark项目代码以及数据,请下载查看

    在本压缩包中,我们拥有的是一个基于Spark的大数据项目,该项目专注于广告的精准投放。开发者使用了Scala作为编程语言,这得益于Scala与Java的兼容性以及它在处理大规模数据时的强大性能。以下是对这个项目及其组成...

    常用的源代码下载网址(很有用)

    通过这些平台,用户不仅可以获取到丰富的开源项目源码,还能参与到项目开发中去,提升自己的技能水平。 #### CSDN (China Software Developer Network) - **简介**:CSDN 是中国最大的开发者技术社区之一,提供了...

    含源代码数据挖掘与分析(Python版).zip

    数据挖掘与分析是信息技术领域的重要组成部分,特别是在大数据时代,它为理解和发现隐藏在大量数据中的模式...通过研究这些源代码,你可以更好地理解数据挖掘与分析的工作流程,以及Python在处理这些问题时的强大能力。

    非常好的AI大模型源代码100%好用.rar

    大模型通常指的是拥有海量参数的深度学习模型,如谷歌的Transformer、Facebook的MegaBERT或阿里云的Qwen等。这些模型在大规模数据集上训练,具有强大的泛化能力和处理复杂任务的能力。它们在自然语言处理(NLP)、...

    RPG 游戏代码-新鲜出炉

    9. **性能优化**:大型RPG游戏可能包含海量数据,因此优化代码性能、降低内存占用和提高运行速度是开发中不容忽视的部分。 在实际开发中,开发者可能会选择不同的编程语言(如C++、Unity的C#、Unreal Engine的蓝图...

    Python-按stars排序的论文代码实现列表每周更新

    GitHub上的star数量通常代表了一个项目或代码库的质量和影响力,因此,通过这个列表,用户可以快速找到具有高质量代码实现的论文,节省了他们在海量资源中搜索的时间。 标签 "Python开发-机器学习" 明确指出这个...

    Go项目API在线文档GoWalker.zip

    Go Walker 是一个用于在线生成并浏览 Go 项目 API 文档及黑客视图的 Web 服务器,目前已支持包括 Bitbucket、GitHub、Google Code、Launchpad 和 Git @ OSC 在内的五大代码托管平台。 主要特性 ...

    大模型-必读论文及复现代码.rar

    这些大模型通常拥有海量参数,能处理复杂的任务,如自然语言处理、图像识别、语音识别等。此压缩包可能包含了一系列重要的研究论文,以及对这些理论成果的实践代码,对于研究者和开发者来说是宝贵的资源。 【描述】...

    C代码查看利器:SourceInsight

    SourceInsight就是这样一款专为程序员设计的代码查看和编辑利器,它以其强大的功能和友好的用户界面,帮助开发者在海量的代码库中快速定位和理解代码逻辑。 SourceInsight的核心特点: 1. **实时语法高亮**:...

    aiXcoder 7B 代码大型语言模型的官方仓库

    该仓库包含了模型的详细文档、示例代码和API说明,方便开发者快速上手并集成到自己的项目中。 总结来说,aiXcoder 7B代码大型语言模型以其强大的代码理解和生成能力,为编程工作带来了革命性的变化,将AI技术与编程...

    万能的搜索引擎免费代码

    7. **免费代码与开源**:开源搜索引擎项目如Elasticsearch、Solr和XunSearch提供了强大的搜索功能,并且允许用户自由使用和修改源代码。它们通常拥有活跃的社区支持,便于开发者解决问题和改进功能。 8. **自然语言...

    海量C源代码实例,包括数据结构篇,图形篇,系统篇,综合实例等

    在本压缩包中,我们拥有一系列丰富的C语言源代码实例,涵盖了多个关键领域,旨在帮助程序员深化对C语言的理解并提升编程技能。这些实例按照不同的主题进行了划分,包括基础篇、数据结构篇、数值计算与趣味数学篇、...

    java开源代码

    Java开源代码是软件开发领域中的一个重要组成部分,它体现了开放源代码的精神,允许开发者查看、使用、修改和分发代码,促进了技术的共享和创新。在Java这个强大的编程语言背景下,开源代码库为开发者提供了丰富的...

    BK2Site书签转换程序源代码

    【BK2Site书签转换程序源代码】是一个用于管理和转换浏览器书签的开源软件项目。这个程序的核心功能是帮助用户统计、整理和管理他们的在线书签,提供了丰富的自定义选项和安全特性。它允许用户根据自己的需求对书签...

    基于Python的开源量化交易平台开发框架+源代码+文档说明

    1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合...

    国内外优秀的源码网站.docx

    - GitHub是最流行的开源代码托管平台,其内置的Code Search功能允许用户在海量的开源项目中搜索代码。开发者可以通过关键词、文件类型甚至代码片段内容进行精确查找,是获取最新、最流行代码的首选之地。 2. **...

    爬取lian家代码+模拟网站代码.zip

    1. **Python爬虫代码**:Python是数据爬取的常用语言,它拥有丰富的库如BeautifulSoup和Scrapy等,可以方便地处理HTML和XML文档,提取所需数据。在这个项目中,开发者可能使用了这些库来解析链家网站的HTML结构,...

    万年历(公历+农历)源代码

    万年历源代码(使用JavaScript脚本编写),拥有公历,农历,国内,国外,节假日,纪念日等海量信息......

    大规模社会网络分析代码

    在压缩包中,"README"文件通常包含了项目的介绍、使用指南和开发者信息,是了解项目的第一步。"glib"可能是一个图形库,它提供了一系列用于创建、操作和分析图形数据结构的函数,这对于处理社会网络非常有用。...

Global site tag (gtag.js) - Google Analytics