快速的看懂老项目代码
如果拿到一个老项目进行新功能改造,首先看懂老项目很重要,而有些老项目由于各种原因没有明确的注释,甚至经多人开发后注释和弃用代码混为一体,惨不忍睹。关于如何看项目代码我有下面一点心得:
- 熟悉项目流程
- 先把程序的功能搞清楚,根据功能画出程序的流程图,弄清楚主流程和自己要看的分流程之间的关系。这里可以先自己思考一下,如果自己设计这个项目会怎么去处理这些需求,可以有一个大概的推演。
- 然后找之前的设计文档,看一下系统的设计思路,对比一下自己的想法和他们的设计有哪些不同,分析一下优劣。这里一定要揣摩设计者当初的想法和思路,最好是对照目前系统的功能综合理解一下。
- 这里有更惨的就是找不到当初的设计文档,那也没办法啊,只能自己想办法了,这里我的做法是先去看看项目中的包结构、类和接口的命名、系统的层次关系、数据封装的特点,总会是有规律的。如果发现了某些规律就及时记录下来
- 找到逻辑主线
接下来就是正式看代码了,这里相信很多人都有一个功能找不到入口抓狂的感觉,反正我是有过。- 这个先不要急,借助于浏览器的开发者工具快速的找到页面文件,在文件中找到表单提交的路径和页面上最重要的那个功能对应对应的处理方法,看看它们对于数据的封装是怎么处理的。
- 沿着这个入口找下去,当找到后台代码时一定要在入口出打上 Debug 断点。然后根据自己一开始总结的项目设计的分层风格,快速的找到下一层处理的类和它的主处理方法,一直到与数据库交互的持久层的接口。
这里先不要纠结代码的实现细节,以找到逻辑主线为目的。
- 分清主次关系
- 看代码一定要找到核心代码,对于一些参数校验、异常处理等等不要太纠结,看清楚他们的条件就行了。
- 对于有分支判断的地方要注意研究它的判断条件,一般判断条件都是根据前面所封装的数据得出的,这里一定要清楚每个分支所代表的意义,也有主次之分或者说每个并列分支的重要性,然后再去看里面的逻辑,总之时刻联系功能的流程进行对比。
- 关注数据传递
一定要关注数据的传递过程,就是从前端一直到数据库这个过程中对数据的数次封装和使用- 先看通过什么类型封装的,是通过容器还是通过直接的一个类对象进行封装,封装成了哪个变量
- 要注意变量的作用域,是全局的还是方法中的局部变量或者一个判断、循环的,数据也要分清主次
- 再看看什么地方用了、值改变了没有、如何变的
- 要特别关注方法的参数和返回值,搞清楚调用时参数的来源,调用了这个方法后达数据做了哪些变化
- 勤做总结笔记
- 对于每看一个小的功能流程都做一下详细记录,包括画调用过程图、记录所操作的数据表、写自己对于项目的一些理解和心得
- 看完一个整体功能后再把各个分支流程串起来再做一次整理,然后细细品味其中的关系和逻辑。
- 对于之前的笔记最好是不要删,哪怕是随着自己对系统理解的深入可能会推翻之前的认识,我的做法是把它标出来,写上不同日期。这样再过更长时间后就会有更不一样的理解和自己的见解了。
以上只是自己在熟悉前人项目代码时的一点心得,希望各位博友提出宝贵的意见以供互相学习,共同提高!!!