『No16: 如何快速熟悉一個項目』

image.png

大家好,我叫謝偉,是一名程序員。

最近比較忙,一方面是換工作,一方面是熟悉新的環(huán)境。一言難盡。

今天的主題:如何快速熟悉一個項目

之所以講這個話題,主要是最近新入職,因為是創(chuàng)業(yè)公司,不像大公司里的節(jié)奏,給你時間學(xué)習(xí),創(chuàng)業(yè)公司需要你快速的融入環(huán)境,快速的熟悉業(yè)務(wù)代碼,快速的實現(xiàn)需求。坦率的講,能力不足的時候會給你帶來焦慮。

綜合下來,當(dāng)下,我還是喜歡創(chuàng)業(yè)型公司。


所以,我就遇到里這個問題,入職三天,第一天就開始分配任務(wù),好在完成了需求,雖然需求不是很復(fù)雜。但是快速熟悉了項目,切入進(jìn)了項目內(nèi)。

我把自己的方法整理出來,希望對大家有幫助。

主要是后端代碼為例

1、具備最小知識集

這一點主要說明的是,你應(yīng)該要有些基礎(chǔ),寫過些代碼,不管是自己私底下接觸,還是仿照別人的例子,你大概要熟悉一門編程語言,知道后端大概會接觸些什么技術(shù)。

  • 數(shù)據(jù)庫操作

在這之前,你要會用一種類型的數(shù)據(jù)庫,不需要精通,初級的知道CURD 其實都還OK,但是這樣的水平可能會讓你寫的代碼或者設(shè)計的業(yè)務(wù)比較不堪,所以,關(guān)于數(shù)據(jù)庫盡量需要知道更多的知識,比如數(shù)據(jù)庫的三大范式,索引、外鍵、主鍵、數(shù)據(jù)庫關(guān)聯(lián)等

  • 編程語言

不管實際上你入手的項目是不是你熟悉的編程語言,至少你要熟悉一門編程語言,假如你要熟悉的項目的編程語言剛好是你會的,那么你熟悉起來當(dāng)然是更得心應(yīng)手了。假如不是你熟悉的編程語言,其實也都好OK,因為我見過許多程序員,編程語言都不是最重要的,只要熟悉了一門,這種技能遷移的能力,在程序員屆實在是太常見了。

  • API

知道 http 請求的主要過程,知道 http 的動作。

看得懂API:方法、參數(shù)、響應(yīng)值。

更高一點的需求,會用 swagger 編寫 API

...

初級的后端技術(shù)就這些東西吧。

2、跑通代碼

跑通代碼意味著你大概能知道這個項目最后的結(jié)果是咋樣的。

比如說這是一個后臺管理系統(tǒng),你可以看API 文檔,大概知道提供哪些接口。

假如又提供了前端,那更好,你可以看看網(wǎng)站,網(wǎng)頁點擊點擊,看看網(wǎng)絡(luò)請求是調(diào)用的哪個API. 觸發(fā)的動作是什么,響應(yīng)又是什么。

跑通代碼,你可能也可以看到,整體的部署流程是什么樣的,比如如何部署的?容器?鏡像?最后又是如何自動的部署到服務(wù)器上的?

假如代碼沒跑通,那么你可能依賴沒搞好,或者設(shè)置沒搞好,或者需要走的步驟你沒執(zhí)行?

總之,跑通代碼很重要。

相同的道理,有時候,你使用某個開源項目,某個具體的用法文檔上寫的不是很清楚,這個時候有可能你需要看看開源項目的測試文件,有可能你只是摘抄幾個測試文件中的函數(shù),自己運行起來,再修修改改,然后你可能就搞懂了具體怎么用了。

3、項目使用里哪些第三方庫、結(jié)合官方文檔使用第三方庫

  • 絕大多少項目都需要依賴已有的成熟的第三方庫:節(jié)省時間成本

跑通代碼這一步,應(yīng)該就已經(jīng)會有下載第三方庫的步驟了。

這些第三方庫,不需要你使用的非常6, 你只需要知道如何使用即可。怎么知道如何使用?

1、看官方文檔
2、看不懂就Google 搜一搜能看懂的例子,但只是作為輔助手段,最主要的還是文檔
3、拷貝文檔例子,自己實驗下,發(fā)現(xiàn)問題,有時候你看到的以為會,其實不一定真會,讓代碼跑起來很重要
4、換個例子,結(jié)合自己的歷史經(jīng)驗和現(xiàn)有的文檔,看看能不能換個例子再實現(xiàn)一下,能不能更優(yōu)化了你之前的想法,提供了更好的解決方案

4、梳理項目結(jié)構(gòu)

項目結(jié)構(gòu),講究的是如何組織的代碼層級結(jié)構(gòu),體現(xiàn)在最終的效果上就是代碼文件是如何組織的了。

我之前非常崇尚領(lǐng)域驅(qū)動 DDD

項目的組織也一度按照的是 DDD 的指導(dǎo)思想:

  • Domain 領(lǐng)域?qū)?/li>
  • Infra 基礎(chǔ)設(shè)施層
  • UI 用戶UI 層
  • Application 應(yīng)用層

不過當(dāng)然不是所有的項目都和你想象的一樣,受歷史的原因,項目的組織結(jié)構(gòu)往往受第一個寫這個代碼的人的影響,一定程度上反應(yīng)了第一個寫這份代碼的人的編程風(fēng)格。

好,這里當(dāng)然不是講述個人編程風(fēng)格問題。

好的項目組織:

  • 好看:

這是第一印象,什么叫好看呢?項目組織清晰,一看就知道,哪部分是干什么的,實現(xiàn)了什么樣的功能。

  • 可拓展:

特別是作為一個初始階段的項目,會頻繁變動,這個時候拓展性、可維護(hù)性的項目一定會給你解決掉諸多的問題。

  • 低耦合

即相互之間的依賴少,即可實現(xiàn)功能。低耦合性對于不斷變更的需求的初始項目來說,爽的一筆。

總之,就算你不熟悉具體的代碼內(nèi)實現(xiàn)什么樣的功能,僅僅看項目結(jié)構(gòu),你大概也能猜出來這個文件內(nèi)的代碼大概是實現(xiàn)什么。對我來說,這就是好的項目組織結(jié)構(gòu)。

假如遇到的項目組織,確實不是上文講的那么優(yōu)雅,那怎么辦?

  • 你確定需要待這家公司?確定。好,你的機(jī)會來了。你可以進(jìn)行重構(gòu)。重構(gòu)意味著你對代碼需要非常熟悉。假如你有這個任務(wù),相信我,你能熟悉這個項目的。

好,這節(jié)主要是梳理項目的組織,知道哪塊負(fù)責(zé)什么任務(wù)。

可能光看還不容易明白,不利于思維的呈現(xiàn)。那怎么辦?

  • 筆記本上寫寫畫畫,流程圖搞起來
  • 思維導(dǎo)圖畫起來

假如還是不懂,那怎么辦?

兄dei, 問問會的人羅。

面子是最不值錢的玩意,不懂就問

5、仿照項目實現(xiàn)另一需求

簡單的說

  • 仿照或者優(yōu)化項目結(jié)構(gòu)
  • 借用相同的技術(shù)棧,自己尋找類似的例子,從頭到尾的實現(xiàn):自己設(shè)計、自己編碼、自己測試,體量可以比真實的項目小很多,但核心的功能還是要實現(xiàn),數(shù)據(jù)量不一定相當(dāng)。一句話說:麻雀雖小、五臟俱全
  • 講出來:結(jié)合你自己實現(xiàn)的這個需求,編碼完成之后,講出來,相信我,會對你有好處的。

好,本節(jié)大概這樣,最重要的是第五條。

再會,我是謝偉。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • 1、通過CocoaPods安裝項目名稱項目信息 AFNetworking網(wǎng)絡(luò)請求組件 FMDB本地數(shù)據(jù)庫組件 SD...
    陽明AI閱讀 16,205評論 3 119
  • 文:代大鴻 在之前的時間里,志愿者工作只在電視和網(wǎng)絡(luò)上見過,今天有幸第一次參加了園區(qū)黨工委組織的“創(chuàng)文城市...
    殼殼巷閱讀 327評論 0 0
  • 記得剛剛上大學(xué)的時候那個激情澎湃,暗暗告訴自己,畢業(yè)一定要干一番事業(yè),混出個人樣兒來。最起碼有有兩個底線不能逾越,...
    基礎(chǔ)繪畫社閱讀 317評論 3 1
  • 1.回鄉(xiāng)記(一) 施璇 第二天整個人好了些,頭不怎么疼了,便也就恢復(fù)那股精神氣,到處去...
    聽語堂閱讀 1,033評論 0 3

友情鏈接更多精彩內(nèi)容