当你作为一个新人进入一个开发团队的时候,最常听到的话可能是:

那谁谁,你把咱们的项目熟悉一下吧。

然后你 clone
好了项目,接着就开始进入了一段相当长时间的懵逼状态中,可能你会面临这么几种情况:

  1. 感觉项目好复杂
  2. 好多是你不会的
  3. 项目怎么跑起来都不知道
    等等…

甚至你还会抱怨:

这写的什么垃圾代码?我不会是来背锅的吧?

我想大部分人都遇到过类似的情况,我以前就常常遇到,我最开始接手别人的项目的时候,我也是慌得一笔,哪哪都觉得别扭,哪哪都想骂娘。

但后来有一次经历改变了我这种想法,我竟然变成了这样:

要是我再能接手别人的新项目就好了!

事情是这样的,我那会刚工作的时候,做的是 Android
开发,表现还可以,后来上面就找到我说, Java web 后台的人手不够了,问我能不能上?

生活告诉我,要么上,要么被生活上。

所以我就只能笑嘻嘻的给答应下来了,不过心理慌得一笔,因为那会我对 Java web
那些框架完全没有学过,一窍不通啊!

当我开始着手这件事的时候,我得到的只有这么些:

一堆项目源码文件,写了一半的接口文档,以及用了什么技术选型,什么框架(现在依稀记得是
ssh…),然后就没有然后了…

当我试图把源码导入编辑器,跑起来的时候,发现我还是太天真了,各种库缺失,各种环境没搭建好…

是的,我特么连项目都跑不起来,写个鸡腿儿啊!?

后来加班了一个大晚上,各种搜索,各种安装,最后才勉强把项目跑起来,当我看到后台首页运行在浏览器的时候,才长舒一口气,嘴里不断的说着一句老潮汕话:

老爷保佑…老爷保佑…老爷保佑…老爷保佑..

接下来几天基本没怎么敲键盘,就是看代码,搜索相关框架的教程,然后看着看着有那么几个瞬间,让我虎躯震了又震,我在感叹:

这项目分的好清晰啊,各个模块都安排的刚刚好啊,高内聚低耦合啊,接口代码也写的很简洁啊…哦,原来商品订单的
SQL
语句是这样写的啊,积分优惠条件的语句是这么写的啊,自定义的工具包有这么多好用的东西啊…

后来发现新增功能也不难嘛,照着之前的模块写就好了,虽然业务不同,但是低层是怎么调用的,
SQL 语句在哪里写,在那里被调用等等,其实都差不多一个写法。

那时候我才发现,我以前做项目的时候,都是从无到有,从框架一步一步搭建写起来的,是一种很正向的方式,而这次,却是:

逆向的,直接从项目开始!

而这种逆向学习法,反而给我带来了很大的进步,或者说,相对进步的比较快,还挺神奇的。以至于到后面,我都挺期待接手大佬写的项目,因为我总能从中寻找到宝藏。

有些事情其实很简单,但是你不知道这事的操作方法,你就会一直觉得这事很比登天还难。

通过已有的项目反向学习,给我之前带来挺大用处的,所以我想把这种方法分享给你,可能你会说,那是你运气好,能遇到大佬的优秀项目。

我想说的是,没有完美的项目,我当然也有发现一些不合理的地方,人无完人嘛~多发现别人好的方面,学习它们,让它们成为我们自己的一部分,就够了。再说了,GitHub上面的优秀项目是不是很多,找一两个适合现在你的去逆向学习吧,相信我,在这个过程中你也会像我之前那样:虎躯震了又震!