最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

剛?cè)肼毿鹿?,怎么快速看懂代碼?

2022-03-06 23:10 作者:程序員魚皮  | 我要投稿

大家好,我是魚皮,前幾天在我的小圈子內(nèi)開了一場直播,專門給學(xué)編程的同學(xué)答疑,一場下來竟然回答了 40 多個問題!

其中有個問題是:魚皮啊,我今天剛剛?cè)肼氁患夜緦嵙?xí),需要熟悉已有的項目代碼。因為是第一次接觸已上線的工程代碼、且代碼量超級大,所以把我看懵逼了。想問下應(yīng)該怎么快速熟悉代碼呢?

這個問題可太真實了,讓我瞬間回想起自己進第一家公司實習(xí)時的 “恐懼” 。

面對前人堆積的屎山代碼、復(fù)雜的業(yè)務(wù)流程圖,我當(dāng)時心里只有一個念頭:我要回家!

不過隨著自己讀過的、寫過的代碼越來越多,感覺上手新項目也越來越迅速了。下面給大家分享我的一點經(jīng)驗:如果給我一個新項目,我會怎么看?

如何快速上手新項目?

我覺得可以遵循以下幾個步驟:

1. ?獲取項目相關(guān)信息

進入一家新公司后,如果遇到不負責(zé)任的同事呢,可能直接甩給你項目地址,然后就讓你自己研究了。這就好比產(chǎn)品經(jīng)理直接甩給你一個需求讓你直接上線一樣,怎么實現(xiàn)我不管。

這種情況下,我們首先要做的事情是盡可能多地獲取項目相關(guān)信息,來幫助自己了解項目。比如項目介紹文檔、項目功能說明文檔、業(yè)務(wù)流程圖、項目歷史迭代情況、項目架構(gòu)文檔、技術(shù)選型背景等等。

像我的話,就會詢問同事:這個項目背景是什么呀?這個項目有沒有啥文檔呀?之類的。

不過有些公司或項目可能過于敏捷,平時光做需求,不寫文檔,邏輯全靠口口相傳!

也沒關(guān)系,請同事給你介紹一下項目的業(yè)務(wù)和技術(shù)信息就好。

剛進公司有問題一定不能憋著,要多問,讓自己盡可能多地了解項目代碼之外的東西。

2. 了解業(yè)務(wù)流程

技術(shù)是為業(yè)務(wù)服務(wù)的,千萬不要連自己項目是干嘛的、有什么功能、為什么要做這個功能都不知道,就去看代碼、想著快速把需求完成。最好不要把自己當(dāng)成臨時工,而是要當(dāng)成項目的 負責(zé)人 。

我的話一般會先閱讀文檔或者請同事來給我介紹項目的 背景 ,即為什么要做這個東西;然后對著產(chǎn)品本身(可能是網(wǎng)頁或者 APP)來體驗項目的功能;最后再重點關(guān)注自己要做的業(yè)務(wù)、負責(zé)的功能模塊,了解它的歷史、業(yè)務(wù)邏輯等。

整體的思想就是從整體到局部,由大到小吧。

這里為什么我反復(fù)強調(diào)要了解項目的背景呢?聰明的朋友一定能想到。因為你剛進一家新公司或者一個新項目,如果自己啥都不懂,別人說啥你就做啥,就很有可能出現(xiàn)這個項目 / 功能本身根本沒有任何意義、你只是幫忙收拾了個爛攤子的情況。。。

3. 閱讀項目文檔

閱讀公司的項目過程其實和閱讀開源項目是一樣的,基本上項目的代碼倉庫都會有一個 README.md 文件。

這個文件往往會介紹項目的背景、功能、技術(shù)棧、如何啟動、如何貢獻代碼等等。

我會先整體掃一遍文檔的 目錄 ,然后優(yōu)先關(guān)注項目的技術(shù)棧以及如何啟動。

一般 GitHub 等項目平臺都會幫你生成文檔目錄,可以很快地跳轉(zhuǎn)。也可以把文檔下載到本地,用 Typora 之類的 Markdown 編輯器打開,從而清晰地看到文檔的目錄。

項目文檔目錄

因為如果你了解了項目用到的技術(shù),而你正好會用這個技術(shù)的話,心里就多了幾分底氣,項目的架構(gòu)也能大致了解了,后面再去看代碼就輕松地一批。

舉個例子,看到技術(shù)棧中出現(xiàn)了 Ant Design Pro,我正好用過!我就知道這個項目大概率使用了 React、Ant Design、Webpack、Dva、Umi 等技術(shù)了,它的代碼結(jié)構(gòu)如何、配置文件在哪里、頁面文件在哪里、如何啟動也差不多能 get 到。

Ant Design Pro

像我平時在 GitHub 上找開源項目時,除了功能外,就是關(guān)注技術(shù)棧,如果項目文檔中提到的技術(shù)我都會用,那么我就很有自信這個項目我肯定能學(xué)的動、學(xué)得懂。

所以這也是為什么要多了解和積累一些技術(shù)。

補充一下,如果作者沒在文檔中寫明技術(shù)棧怎么辦?這里有個小技巧,去看項目的依賴管理文件,比如前端的 package.json 、Java 的 pom.xmlbuild.gradle 等。

4. 先把項目跑起來

關(guān)于這點沒什么好說的,先把代碼拉下來、安裝依賴、按照文檔把項目跑起來,才能更好地了解和調(diào)試項目。

比較麻煩的點可能就是環(huán)境的搭建,比如本地安裝 MySQL、Nginx 代理之類的。不過現(xiàn)在很多公司也會采用開發(fā)機、或者遠程開發(fā)環(huán)境的模式,直接連接某個遠程庫就好了,能省很多事兒,也可以請教一下同事怎么搭建環(huán)境比較方便。

5. 閱讀代碼

終于到了讀代碼的環(huán)節(jié),建議大家遵循兩個原則:

  • 由整體到局部:先了解整個項目的目錄結(jié)構(gòu),每個目錄都是做什么的,比如在哪里寫頁面?在哪里改配置?在哪里改接口?怎么切換環(huán)境等。

    還要了解項目的模塊劃分,比如哪些代碼是用戶模塊、哪些代碼是訂單模塊,可以通過 JetBrains 等開發(fā)工具來自動生成 UML 類圖,更清晰地了解。

  • 結(jié)合業(yè)務(wù):讀代碼的時候盡量不要裸讀、按順序讀,而是可以配合系統(tǒng)去定位代碼。比如閱讀用戶登錄功能的后端代碼時,可以在前端執(zhí)行一次登錄,然后在瀏覽器 F12 網(wǎng)絡(luò)請求中找到登錄對應(yīng)的后端請求,再到代碼中全局搜索這個請求即可。閱讀用戶下訂單的代碼時,可以先在前端模擬一次下單操作,了解整個過程,從而更好地理解請求之間的順序和依賴關(guān)系。

6. 上手開發(fā)

最后也是最關(guān)鍵的一點,讀代碼不能只讀代碼,一定要多上手去寫、去執(zhí)行、去調(diào)試。

必要時可以專門新建一個分支,在這個分支里無論怎么 “為所欲為” 都不會影響到正常已上線的代碼??梢宰约簭?fù)制代碼去執(zhí)行一遍、自己給代碼流程加上一些日志來幫助理解數(shù)據(jù)流轉(zhuǎn)過程、或者 Debug 調(diào)試等。

其實剛進一家新公司時通常不會給你安排太復(fù)雜的工作,基本就是增刪改查、或者給你一個小頁面小功能去做,幫助你熟悉代碼。有些時候,哪怕你不理解整個項目的架構(gòu),通過復(fù)制同事已經(jīng)寫過的代碼也能完成工作。不過還是建議大家,為了長遠的發(fā)展,不要只局限于自己負責(zé)的小功能,可以多了解系統(tǒng)的上下游和整體架構(gòu),提高自己的全局觀。

以上就是本期分享。這只是本次直播中我回答的其中一個問題,我還總結(jié)了一些其他問題,比如:

  1. 暑假去 java / 前端實習(xí)的話都需要會哪些知識呢?

  2. jsp、jQuery 還有必要學(xué)嗎?

  3. 怎么把 CRUD 項目更地好寫進簡歷?

  4. 有沒有什么好的學(xué)算法方法或者一些引導(dǎo)視頻?

  5. 春招要來了,我應(yīng)該怎么準(zhǔn)備?

  6. 開發(fā)項目時該如何具體選用前端組件庫?

等等等等這些問題我都給出了自己的一些看法。直播回放已經(jīng)發(fā)到了我的小圈子中,之后還會有很多場直播,感興趣的朋友可以關(guān)注下~

最后再說說我最近搞的編程學(xué)習(xí)小圈子,里面已有 3000 多名小伙伴在一起學(xué)習(xí) / 交流編程,還有各種保姆級學(xué)習(xí)資料、魚皮直播開發(fā)項目等,歡迎 點擊加入 ~

剛?cè)肼毿鹿?,怎么快速看懂代碼?的評論 (共 條)

分享到微博請遵守國家法律
阿克| 中超| 百色市| 仁化县| 聊城市| 叶城县| 盘锦市| 邻水| 苍梧县| 图片| 临湘市| 宾阳县| 枝江市| 双峰县| 石家庄市| 永仁县| 绥化市| 胶南市| 太仆寺旗| 永年县| 淮安市| 义乌市| 关岭| 桐乡市| 铁力市| 龙南县| 鄂州市| 盐亭县| 贵德县| 中江县| 吉林省| 康保县| 册亨县| 新宁县| 青州市| 永宁县| 固始县| 晋中市| 平湖市| 阿荣旗| 三都|