如何快速的熟悉一個新的軟件項目?

轉載: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)在你力所能及的範圍內讓老系統變得更美好。

 

新接手一個系統,若是你的目的是假設須要你排查一個問題,你就能快速定位代碼位置這樣的要求便可的話,掌握系統的大致架構和核心流程便可。

大致手段都差很少,從全局角度理解問題,拆開看細節實現。

1,弄明白系統是什麼(定位,以及對外提供的功能)
2,有文檔就看系統的設計文檔,弄明白系統的模塊結構,理解系統是如何構成的。(若是沒文檔只好看代碼目錄結構了,而後試圖經過模塊間的接口梳理清楚模塊關係)
3,看一下核心功能實現,理解整個功能流程是如何走通。

至於後續若是須要你去優化系統關鍵流程,優化架構,就須要你對業務、對原理、對實現更深入的理解了,這個沒有什麼捷徑可走,只能花時間思考和折騰。
 
僅從單個項目的角度而言,有兩個思路:
1. 按接口從上往下梳理
2. 按數據庫從下往上梳理

須要梳理的東西主要有兩個:
1. 類/方法/函數之間的調用關係
2. 參數傳遞與變化

經過上面的方法基本能整理出一套從接口到各處理類/方法/函數再到數據庫的邏輯鏈條,而後再具體看每一個類/方法/函數的實現,基本就能快速上手了

 

 讀代碼的技巧:

o  先補充基礎知識。好比新上手Visual Studio,瞭解一下nuget;剛接觸Android,瞭解一下什麼是activity、service、context這些。這是純粹讀代碼沒法讀懂的

o  先大塊,後小塊。大塊的讀,知道每一個module大體幹啥就行,而後當作一個黑箱便可。再相關的module,把黑箱化小

o  設斷點,打log,看call stack

o  頭腦裏思考兩件事。一,靜態上dependency是怎樣的,誰調用誰;二,動態上時序是怎樣的,思考一下線程之間的關係

o  勤問,本身讀以前找人大體講一下會省不少時間。糾結於細節等於喪失big picture

· 而後你會發現你有一大堆須要讀的,一大堆須要問的,一大堆須要學的。分好輕重緩急,一個個去作就好

 

補充:推薦能夠看https://www.jianshu.com/p/56a764cb48ec

相關文章
相關標籤/搜索