做爲一個程序員,咱們不多能從頭至尾參與一個新項目的開發。若是你常常開發的是新項目,那你真是太幸福了。git
更多的狀況是半路進入一個項目組進行開發,或者是有其餘同事離職了,以前由他維護的系統轉交給你維護。程序員
還有一種狀況就是領導不知道從哪裏弄過來一個系統和一堆文檔,而後就直接就把系統交給你了維護了。數據庫
遇到以上幾種狀況咱們怎樣才能快速熟悉上手項目,應對生產問題呢?下面是我本身在工做中的一點總結,但願能對你們有所幫助。svn
當你接手一個新項目(別人的項目)的時候,你要第一時間向把項目移交給你的人要到全部的資料。由於在這以後,這個同事可能就會離職了,到時再要什麼文檔就不太方便了。通常狀況下,你須要拿到這些資料:加密
拿到文檔資料後,我我的的經驗是先要快速瀏覽下文檔,不須要看清文檔的每一個段落,可是咱們要經過略讀文檔知道這個系統大概是幹什麼的,有哪些功能。這點對咱們後續看代碼幫助很大。debug
快速瀏覽完文檔以後,咱們就要開始看代碼了。這個階段,你須要能將代碼在本地跑起來,知道這個項目運用了哪些技術棧,每一個技術棧的做用是什麼。設計
搞清楚了上下游系統,咱們就知道了誰調用了咱們系統,或是咱們的系統調用了誰,查起問題來也能有的放矢。3d
日誌是查線上問題的關鍵,必需要知道怎麼查日誌,去哪裏查日誌。日誌
接了新需求或者改了Bug以後你確定要發佈吧,那你必需要知道這個怎麼打包部署。中間件
同上
到了最關鍵的一步了,可是對於這步我以爲不一樣的系統咱們能夠區別對待下。有的系統咱們接手過來是要在此基礎上長期開發維護的,那這種系統就須要咱們好好梳理下業務。
可是有的系統比較穩定了,也不會再加什麼新功能,對於這種系統要不要深刻研究就須要咱們本身權衡了。由於時間成本上可能划不來。
下面是我熟悉業務的通常流程:
step1:在看業務代碼以前,首先須要看完數據庫的表設計,否則會不知所云。
step2:而後就是梳理各個接口了,通常是各個Controller(通常系統功能都是經過Controller暴露出去的),若是你能每一個接口跟進去debug一遍,整個調用流程都梳理清楚,那麼這個業務你就梳理清楚了(這步最好根據接口文檔來梳理)
step3:固然,系統的功能不都是由Controller提供的,有的是經過定時任務來觸發的,因此你要看看系統中配置了哪些定時任務,都實現哪些功能;
step4:還有的功能是經過消費MQ觸發的,因此也要看看有沒MQ相關的交互;
step5:相似其餘的交互
關於熟悉業務代碼這塊可能沒有太通用的方法,仍是須要你們本身總結。