一、快速熟悉一個系統
我認為寫得很好的一個文章,如何快速熟悉一個系統。參考博文:https://www.cnblogs.com/flashsun/p/9450066.html
現在發現如何快速熟悉一個系統,核心的內容就是邏輯,如何把邏輯理解清楚,是我們首要去處理的問題。
從技術的角度,主要從頁面到數據庫:一個是整理數據庫表,一個是整理Controller層的所有接口。
1.從頁面到數據庫的線
針對邏輯流程的測試,可能最好的方式是從頁面到數據庫的線:頁面訪問路徑--前端項目--后台服務--數據庫地址。
2.整理數據庫表
- 找核心項目
- 篩選核心數據表
- 判斷核心表
- 找出表與表之間的關系
找核心項目: 目標明確,找一個核心項目去展開。
篩選核心數據表: 分2種情況,一個是表少,直接拿工具導出來表結構,一個個看就行了。但如果數據庫表特別多,我們首先要將表名全部導出,篩選出那些核心的表。這里導出表名、篩選表以及后面的分析表字段,不妨給自己做個工具。
判斷哪些是核心表: 首先排除常規表(備份表、中間表、統計表、日志表、配置表)。比如在公司分析的系統,一共150多個表,其中有好多copy結尾的是備份,flow結尾的是流水,rel結尾的是中間關聯表,statistics結尾的是數據統計表,log結尾的是日志表,config結尾的是配置表,等等。其次剩下的表進行分類。比如常規表排除以后也就剩20來張表,再根據它們的名字,可以看出好多表是屬於一類的,比如order表就有各種order,按類別再分出來也就四五類,再分析起來就不難了。當然如果是更大的體系結構,那就要再不斷做拆解。
找出表之間的關系:在具體分析這些核心表字段之前,還要做一件事就是找出表中間的關系。如果表b中有個字段,比如 叫 a.id,那么b和a就是一對多的關系;如果兩個表有rel中間表,那二者就是多對多的關系,起碼從邏輯上講是這樣的。這個分析過程可以做個小工具,通過程序來判斷。
到此,你就對整體的數據庫結構有所了解了。根據表名也能對表的大致內容有所了解,接下來就是針對具體的表,看里面具體的字段和前人給出的備注,這個過程就沒有技巧了,要耐心,要慢慢熬。
3.整理controller層的所有接口
當對數據庫表做了以上的了解后,你基本上對這個系統能提供什么服務了解得差不多了。這個時候不論你的代碼長什么樣子,數據庫擺在那里,能提供的服務差不多就已經出來了,對有經驗的人來講,代碼的業務邏輯也大致能猜到個八九分。
我們梳理了大后方,那接下來就是把最前端和別人交互的部分搞清楚,這樣掐頭去尾,整個項目就解剖的差不多了。
可以做個小工具,掃描出所有的controller層的接口,展示出方法名、路徑名、參數列表和返回值等,但可惜沒能展示注釋。
和數據庫一樣,如果接口很少,那么一個個看;如果特別多,還是先找出比較核心的幾個方法研究。
可以用postman,把要研究的接口訪問保存起來,並且添加訪問成功和失敗的Example。我推薦自己開發的時候也把postman用起來,越詳細越好,postman不只是可以簡簡單單訪問你的接口,還能做批量測試,還可以生成api文檔用於和前端交互。這樣你不但測試了自己的接口,還省的寫文檔了。而且postman還有個好處就是可以給自己的接口mock一個服務,這樣即使你的接口掛了,或者接口根本就沒寫好,也可以讓前端人員先訪問你的mock,完全不影響前端邊測試邊開發,這才是真正的前后端分離嘛。
4.重新清理項目間的關系
好了,這時候每個項目你已經大致了解,最起碼調用的效果,數據庫所能提供的服務,你是清楚的。至此,就要重新整理下項目之間的關系了。
根據之前的接口名稱,詳細了解下項目間的調用關系。理不清的部分去問老員工,這時候你帶着自己的了解問,他們也能給出更多的信息。
看看每個項目中用到的中間件,主要是mq服務,看看誰是生產者,誰是消費者,以此來了解關系。
這時你應該已經開了好幾輪的周會了,接下來的周會你應該能聽懂部分內容。根據每個人的描述和最新的幾組需求,逐漸摸清楚現在項目面臨的問題,以及哪個項目是核心,哪個項目是輔助,哪個項目是以穩定安全為主的。
到此為止,你對整條業務線就有了大致的了解,接下來就可以結合你具體負責的內容、領導安排你做的方向,去看具體的業務代碼了。
雖然之后的步驟依然需要你深入其中,事無巨細地了解具體內容, 但此時,你通過前面的努力,已經可以站在一定的高度看每一個項目了,雖然你細節上還是不了解,但這是完全不同的。
在研究具體業務代碼的同時,不斷地跳出來看整條業務線的框架,修正之前由於不了解具體業務而理解錯誤的架構。
長此以往,你一定會在某個項目中脫穎而出,讓大家認識到你的全局視野,這也是走出老是寫增刪改查代碼怪圈的一個途徑。慢慢會有人意識到,你對項目的理解總能站在全局的視野,很多需要跨項目去做的業務,也會自然而然想到你,慢慢地,你會接觸到更為核心的東西,成為架構師,或者去轉向產品,轉向管理。