`

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

阅读更多

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


导读

换 过几次工作的程序员一般都比较头疼,新到一个公司,会给你一个项目,别人以前写的,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

分享到:
评论

相关推荐

    Go项目API在线文档GoWalker.zip

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

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

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

    轻量级物联网开源平台,6分钟快速部署,千万级设备承载、电信级稳定性 物模型-规则引擎-数据通道-组态页面全流程低代码开发、前后端

    开源平台开发者:一键式开发环境,集成和兼容各种最优开源工具,快速承接物联网项目 垂直领域物联网平台:快速部署私有化平台,千万级承载,运营级底座,全开放扩展完全开源:前后端完全开源,无收费商业版 快速部署...

    DGIOT是国内首款轻量级开源工业物联网平台轻量级物联网开源平台6分钟快速部署千万级设备承载电信级稳定性

    完全开源:前后端完全开源,无收费商业版快速部署:6分钟私有化一键式部署,快速拥有自己的物联网平台专业可靠:千万级设备接入与管理,电信级稳定性兼容并包:兼容工业领域多行业的常见协议类型全流程低代码:物...

    Hadoop系列书籍五本

    内含Hadoop系列之《Hadoop YARN 基本架构和发展趋势》、《Hadoop实战》、《Hadoop海量数据处理 技术详解与项目实战》、《Hadoop官网帮助手册》、《Hadoop源代码分析》五本书籍,你值得拥有。

    完整版三分钟部署自己的ChatGPT网站包含绘画,功能非常丰富,包含源码,保姆级教程

    1、【完整版】包含项目源码,和技术文档说明,非常齐全! 2、会部署网址的同学,几分钟就完全可以快速搞定 3、部署自己的ChatGPT网站包含绘画,功能非常丰富,包含源码,保姆级教程 在 1 分钟内使用 Vercel 免费...

    Go语言超详细入门指南(入门必看)

    Go语言设计良好,执行性能高,可以在不损失应用程序性能的情况下降低代码的复杂性。 Go语言的语法与C相近,但功能上有内存安全、垃圾回收(GC)、结构形态及CSP-style并发计算等特点。它支持面向对象,并具有真正的...

    大数据开发工程师的岗位职责.docx

    6、拥有良好的代码习惯,要求结构清晰、命名规范、逻辑性强、代码冗余率低,代码注释清晰; 大数据开发工程师的岗位职责全文共4页,当前为第3页。大数据开发工程师的岗位职责全文共4页,当前为第3页。7、熟悉使用svn...

    VUE-CLOUD-

    云音乐是一款移动音乐在线听APP,拥有经典老歌,伤感心情,励志标题,各国风俗等海量音乐,致力于为热爱音乐的人群提供便携,纯净的聆听体验。 创建流程: 使用Vue-CLI构建SPA单页面应用程序。 使用Vue-Router配置...

    Node.js的MySQL分表分库访问中间件TribeDB.zip

    拥有以上特点意味着,可随时通过增加普通级别数据库服务器的方式,方便地扩展整体系统性能,而无需修改业务层架构和代码。理论上TribeDB的扩展能力上线在于主库单表插入性能和主从数据同步开销。通过合理设计“横向...

    OQ100(邮件客户端) v2.5.3.zip

    按照销售漏斗或客户类别等方式自由创建目录,结合客户状态选择,多维分类管理海量客户。 以客户为中心的信息存储管理。 客户往来历史资料直接保存在客户名下,报价文档、合同文档、跟进记录、邮件等等重要信息再也...

    舟舟PHP影视系统_2.0

    ·海量资源库,完全免费采集(快播,迅播,web9,皮皮,高清视频)一网打尽 --------------------------------------- 为什么选择 舟舟影视系统 --------------------------------------- 1.卓越的访问速度和负载...

    行业贸易商务门户网站系统正式版

    让你像阿里巴拥有超过1400万网商的电子商务网站,遍布220个国家地区,成为全球商人销售产品、拓展市场及网络推广的首选网站,那你就成功了.阿里巴巴,行业门户,网上贸易,b2b,电子商务,内贸,外贸,批发,行业资讯...

    国内外主流的三维GIS软件

     介绍:World Wind是NASA发布的一个开放源代码的地理科普软件,由NASA Research开发,NASA Learning Technologies来发展,它是一个可视化地球仪,将NASA、USGS以及其它WMS服务商提供的图像通过一个三维的地球模型...

    腾讯开源的分布式毫秒服务引擎 msec.zip

    10年的海量服务开发运营经验和教训使得我们深刻的认识到:要尽早规范团队的开发服务框架,避免到了后期,各种开发语言混杂、各类存储组件充斥、重复编码、每个模块形态不统一、文档缺失、监控瘫痪、人员离职造成大量...

    皮肤控件研究文档,破解后的库文件,皮肤设计工具使用教程

    皮肤组件能完全自动的为您的应用程序添加支持换肤功能,甚至不需要更改您的设计好的Form以及添加一行代码!您 也不再需要花费很多时间来使得自己的应用程序更漂亮。 3 选择皮肤组件产品时需要考虑的几个因素: 3.1...

Global site tag (gtag.js) - Google Analytics