刚入职应该如何快速阅读公司项目代码呢?

前言

我想作为任何一名程序员都会遇到这个问题,是的,比如我!今年刚跳槽从北京回到了深圳。入职的时候我以为看两三天就会开始给我分配任务。结果第一个星期过去,第二个星期过去,都没没有给我安排任务,每天都是让我自己看项目代码,然后看的不明白的地方去问。

实话说,开始挺慌的,因为其实我更习惯去在做的过程中去理解,光看能看的个啥,实践出真知!哈哈哈哈。但是其实这是错的!磨刀不误砍柴工呀!!,其实前期花时间去理解是很有必要的! 因为在后面我开发的时候,很多东西自己做完之后,带我的导师给我检查,然后发现其实很多东西是项目框架中已经有相应的接口了的。然后试用期的第一个月的评价是符合预期,其中最大的问题就是细节处理不够好,小错误有些,然后项目框架还不够熟希。害其实做好这些我觉得能拿个超出预期的,哈哈哈。但是当时看代码的时候基本是把每一个大的点看明如何用,就没去了解细节了。

那么如何看项目代码呢?


步骤一:项目框架和文档

拉取到项目之后,先整体看看项目的目录结构,如图中可以发现有script的文件夹,remote 的文件夹,这些还是挺重要的,我们的文件肯定不是随意安放的。在我们游戏中,一般我们平常开发的功能分为常驻的和活动开启的。比如大厅,设置界面这些,是会一直存在的,但是一些游戏限时活动,往往是我们开启这一个活动才需要加载这一个 bundle。所以一般会有一个文件夹放常用的,而一些限时开启的放到远程来加载,在这里也就是 gameassets 和 remote 文件夹。

好的项目目录结构,我们能够很快速的定位到每一个模块实现的功能,所以仔细过一遍项目目录,我们能够最快速的建立对项目的一个大致认识。

那么再过来的就是项目的文档的,天呀!能有文档的公司真的非常nice的!那就是项目的说明书的!有说明书,那还不好办~

步骤二:那么肯定是得让项目跑起来啦

真的,每一家公司项目都有自己的方案!有些时候跑起项目都不容易!首先看看是否缺依赖,还是不行的话,大胆的去问同事 吧!

那么接下来就是,从入口开始真的事半功倍呀!我们往往在游戏或者项目打开的时候做很多初始化的处理和启动,那么从这里开始可以了解整个项目的执行流程!

步骤三:核心功能

从上面起,我们就会开始到了解每一个模块的功能和使用,这里我建议自己在记事本中简单记录一下,我们这时候分版块去阅读理解,在游戏中,很多时候我们用到某一个板块,往往只是使用它的一两个接口。那么作为常用的接口我们记录下来它的使用,后面我们用到相应的功能,我们可以直接在我们的笔记中找到相应的内容,同时也是一个标识,方便我们快速的再次定位到我们想要的功能的位置。比如下图是我当时做的一些记录,同时在后面也能继续补充一些容易疏漏的地方。

总的来说,这里就是做拆分模块的处理,把整个项目分解每一个模块,然后逐步的理解每个部分的功能实现,避免手足无措,不知道从何下手,也便于更深入的理解每个功能模块。

步骤四:断点调试

断点调试那也是非常便利的方式去理解,不仅能够在我们想要的地方暂停,能够去看变量以及调用的堆栈等信息。同时,我们也能在我们想要开始的地方断点,然后单步调试,一步步的跟着执行走下去,来看代码的执行。

步骤五:问同事

很多时候一个很简单的问题会困扰我们很久,这时候不要觉得不好意思,首先作为新入职不知道是很正常的,这时候同事也会很乐于回答你的。如果怕老是打扰到别人的话,你可以把你的问题都记录下来,然后找一个看起来别人比较空闲的时候去问。不要害怕问,多去问和交流,因为往往讨论的时候,不仅仅是会解决一个问题,还会带来一些别的扩展,打开思维。

工作中如果不敢说,不敢去找别人帮助,没能解决问题,快速上手,不仅是给你自己带来问题,同时等到那个时候可能还得别人来帮你收拾锅,那才更加麻烦别人。其实在职场,真的需要厚脸皮一点会比较好!

其他个人经验

阅读的过程中,我觉得还得特别注意抽象方法,一般我们基类实现好的,会定义好一些抽象方法,子类需要实现,那么我们就要了解好它的一些调用和实现了。开发中使用这些实现好的,而不是自己经常因为没有留意到这部分而去重新实现了类似的方法。

尝试跟踪数据的变化流动也是不错的方式,查看数据的调用关系,流动方式,也能便于理解功能模块间的关系。

还有的话,我觉得是枚举,在游戏开发中,往往很多通用事件会定义枚举,然后通过发布订阅者模式来通知。比如我们奖励的数据变化,那么我们就需要通知到每一个用到这个数据的视图的地方更新。那么就会有这个通知的枚举。

同时,我不同公司在技术上会有很多不同的,有优点和缺点。我喜欢经常会把公司做的好的地方,留意下来,平时会研究,拆分出来,作为自己的技术框架添砖加瓦,特别在游戏中,一个完善的游戏开发框架非常来之不易的,特别是在实际市场中验证过的,作为技术开发,我想每个人都应该有自己的技术储备,以及一些问题的解决方案。因为业务会变,但是解决问题的方案是能适应市场的。

相关推荐
Rattenking5 分钟前
node - npm常用命令和package.json说明
前端·npm·json
Easonmax5 分钟前
【HTML5】html5开篇基础(1)
前端·html·html5
For. tomorrow9 分钟前
Vue3中el-table组件实现分页,多选以及回显
前端·vue.js·elementui
布瑞泽的童话36 分钟前
无需切换平台?TuneFree如何搜罗所有你爱的音乐
前端·vue.js·后端·开源
白鹭凡1 小时前
react 甘特图之旅
前端·react.js·甘特图
2401_862886781 小时前
蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,游卡,oppo,康冠科技,途游游戏,埃科光电25秋招内推
前端·c++·python·算法·游戏
书中自有妍如玉1 小时前
layui时间选择器选择周 日月季度年
前端·javascript·layui
Riesenzahn1 小时前
canvas生成图片有没有跨域问题?如果有如何解决?
前端·javascript
f8979070701 小时前
layui 可以使点击图片放大
前端·javascript·layui