轉載:https://blog.csdn.net/bigestt/article/details/80278452html
http://www.javashuo.com/article/p-snpxonzn-co.html前端
http://blog.sina.com.cn/s/blog_13ca7342f0102xcpf.htmlmysql
咱們會常常遇到一些新來公司的大牛,在短短是一兩週就能夠熟悉公司的業務和技術了,並且還能熟練的輔導比他更早來公司的小菜鳥了。web
什麼緣由呢?由於他們已經從以往的經驗中總結了一些套路出來了。上套路sql
一、絕大部分業務系統,無論它的後端是oracle、mysql、nosql仍是內存數據庫,也無論它前端是web、H五、Winform、Android仍是IOS,它的核心功能都是由增刪查改組成,而後經過通訊、運算和人機交互串起來的,系統的複雜度只要體如今系統規模、性能、穩定性、業務流程、通訊等方面(部分工具類、基礎架構類系統可能不同)。數據庫
二、絕大部分系統,不論是基於Java、.NET、C++仍是NodeJS技術,都是遵循某種或幾種設計模式分層進行開發的,最最多見的就是MVC了。後端
那怎麼快速熟悉新的項目呢?一樣也是套路。設計模式
一、先搞清楚新的項目是搞什麼的。幾個簡單問題:誰在用這個系統?用這個系統解決什麼問題?用這個系統和不用這個系統的區別?根據這些問題去尋找答案。架構
二、弄清楚系統是怎麼分層、分模塊的。每層、每一個模塊都用到了哪些技術和框架,之間是怎麼通訊的。oracle
三、把開發環境搭建起來,經過幾個典型的功能弄清楚系統裏面的增刪查改、通訊、用戶交互是怎麼實現的。最簡單的方法是根據系統的分層,先從前端到數據庫把daima疏通一下,搞不清楚的話打開debug模式一步一步的運行查看。
四、通過上面的3個步驟基本上能夠了解到系統的大體功能,後面就能夠重點關注那些沒有用過的技術和組件,先搞清楚它的目的、背景、實現原理和功能列表,再照着文檔作幾個demo,增長熟悉度。
五、日常開發過程當中若是遇到問題首先要相信:
1)絕大部分本身遇到的問題不少已經遇到過並解決了。
2)絕大部分本身遇到的問題在當前系統裏面已經有答案了。
3)絕大部分本身遇到的問題在你用的框架和組件裏面都有現成的解決方案。
六、對於老系統。
1)老系統其實盡是寶藏,裏面有不少你能夠借鑑和學習的東西。
2)老系統也盡是坑,一個看起來毫無關聯的代碼改了以後可能引起地震。
3)不少你看着不爽的代碼其實都有道理。
4)不要早老系統裏面繼續挖坑。
5)看不懂的代碼不要動。
6)在你力所能及的範圍內讓老系統變得更美好。
讀代碼的技巧:
o 先補充基礎知識。好比新上手Visual Studio,瞭解一下nuget;剛接觸Android,瞭解一下什麼是activity、service、context這些。這是純粹讀代碼沒法讀懂的
o 先大塊,後小塊。大塊的讀,知道每一個module大體幹啥就行,而後當作一個黑箱便可。再相關的module,把黑箱化小
o 設斷點,打log,看call stack
o 頭腦裏思考兩件事。一,靜態上dependency是怎樣的,誰調用誰;二,動態上時序是怎樣的,思考一下線程之間的關係
o 勤問,本身讀以前找人大體講一下會省不少時間。糾結於細節等於喪失big picture
· 而後你會發現你有一大堆須要讀的,一大堆須要問的,一大堆須要學的。分好輕重緩急,一個個去作就好