当你作为一个新人进入一个开发团队的时候,最常听到的话可能是:
那谁谁,你把咱们的项目熟悉一下吧。
然后你 clone 好了项目,接着就开始进入了一段相当长时间的懵逼状态中,可能你会面临这么几种情况:
感觉项目好复杂
好多是你不会的
项目怎么跑起来都不知道 等等...
甚至你还会抱怨:
这写的什么垃圾代码?我不会是来背锅的吧?
我想大部分人都遇到过类似的情况,我以前就常常遇到,我最开始接手别人的项目的时候,我也是慌得一笔,哪哪都觉得别扭,哪哪都想骂娘。
但后来有一次经历改变了我这种想法,我竟然变成了这样:
要是我再能接手别人的新项目就好了!
事情是这样的,我那会刚工作的时候,做的是 Android 开发,表现还可以,后来上面就找到我说, Java web 后台的人手不够了,问我能不能上?
生活告诉我,要么上,要么被生活上。
所以我就只能笑嘻嘻的给答应下来了,不过心理慌得一笔,因为那会我对 Java web 那些框架完全没有学过,一窍不通啊!
当我开始着手这件事的时候,我得到的只有这么些:
一堆项目源码文件,写了一半的接口文档,以及用了什么技术选型,什么框架(现在依稀记得是 ssh...),然后就没有然后了...
当我试图把源码导入编辑器,跑起来的时候,发现我还是太天真了,各种库缺失,各种环境没搭建好...
是的,我特么连项目都跑不起来,写个鸡腿儿啊!?
后来加班了一个大晚上,各种搜索,各种安装,最后才勉强把项目跑起来,当我看到后台首页运行在浏览器的时候,才长舒一口气,嘴里不断的说着一句老潮汕话:
老爷保佑...老爷保佑...老爷保佑...老爷保佑..
接下来几天基本没怎么敲键盘,就是看代码,搜索相关框架的教程,然后看着看着有那么几个瞬间,让我虎躯震了又震,我在感叹:
这项目分的好清晰啊,各个模块都安排的刚刚好啊,高内聚低耦合啊,接口代码也写的很简洁啊...哦,原来商品订单的 SQL 语句是这样写的啊,积分优惠条件的语句是这么写的啊,自定义的工具包有这么多好用的东西啊...
后来发现新增功能也不难嘛,照着之前的模块写就好了,虽然业务不同,但是低层是怎么调用的, SQL 语句在哪里写,在哪里被调用等等,其实都差不多一个写法。
那时候我才发现,我以前做项目的时候,都是从无到有,从框架一步一步搭建写起来的,是一种很正向的方式,而这次,却是:
逆向的,直接从已有的项目开始整起!
而这种逆向学习法,反而给我带来了很大的进步,或者说,相对进步的比较快,这还挺神奇的。
以至于到后面,我都挺期待接手大佬写的项目,因为我总能从中寻找到宝藏。
有些事情其实很简单,但是你不知道这事的操作方法,你就会一直觉得这事很比登天还难。
通过已有的项目进行反向学习,给我之前带来挺大用处的,所以我想把这种方法分享给你。可能你会说了,那是你运气好,能遇到大佬的优秀项目。
我想说的是,没有完美的项目,我当然也有发现一些不合理的地方,人无完人嘛~多发现别人好的方面,学习它们,让它们成为我们自己的一部分,就够了。
再说了,GitHub上面的优秀项目是不是很多,找一两个适合现在你的去逆向学习吧,相信我,在这个过程中你也会像我之前那样:虎躯震了又震!