大家好显沈,我叫謝偉魔慷,是一名程序員喉誊。
最近比較忙片挂,一方面是換工作闷愤,一方面是熟悉新的環(huán)境。一言難盡。
今天的主題:如何快速熟悉一個項目
之所以講這個話題,主要是最近新入職,因為是創(chuàng)業(yè)公司,不像大公司里的節(jié)奏,給你時間學習,創(chuàng)業(yè)公司需要你快速的融入環(huán)境释移,快速的熟悉業(yè)務代碼涩蜘,快速的實現需求误窖。坦率的講毒费,能力不足的時候會給你帶來焦慮。
綜合下來,當下,我還是喜歡創(chuàng)業(yè)型公司。
所以,我就遇到里這個問題,入職三天,第一天就開始分配任務,好在完成了需求窃款,雖然需求不是很復雜紊扬。但是快速熟悉了項目卵凑,切入進了項目內。
我把自己的方法整理出來冠绢,希望對大家有幫助萧朝。
主要是后端代碼為例
1里逆、具備最小知識集
這一點主要說明的是,你應該要有些基礎署隘,寫過些代碼阿弃,不管是自己私底下接觸,還是仿照別人的例子棺蛛,你大概要熟悉一門編程語言,知道后端大概會接觸些什么技術。
- 數據庫操作
在這之前子寓,你要會用一種類型的數據庫,不需要精通也殖,初級的知道CURD 其實都還OK址愿,但是這樣的水平可能會讓你寫的代碼或者設計的業(yè)務比較不堪,所以辐烂,關于數據庫盡量需要知道更多的知識辰妙,比如數據庫的三大范式呆瞻,索引赞赖、外鍵移宅、主鍵、數據庫關聯等
- 編程語言
不管實際上你入手的項目是不是你熟悉的編程語言,至少你要熟悉一門編程語言,假如你要熟悉的項目的編程語言剛好是你會的包帚,那么你熟悉起來當然是更得心應手了瓮床。假如不是你熟悉的編程語言兼丰,其實也都好OK,因為我見過許多程序員,編程語言都不是最重要的谐丢,只要熟悉了一門蹄葱,這種技能遷移的能力帕翻,在程序員屆實在是太常見了歇万。
- API
知道 http 請求的主要過程,知道 http 的動作泳赋。
看得懂API:方法筹燕、參數泵三、響應值弛饭。
更高一點的需求,會用 swagger 編寫 API
...
初級的后端技術就這些東西吧气堕。
2畔咧、跑通代碼
跑通代碼意味著你大概能知道這個項目最后的結果是咋樣的誓沸。
比如說這是一個后臺管理系統(tǒng),你可以看API 文檔,大概知道提供哪些接口垦页。
假如又提供了前端干奢,那更好,你可以看看網站宋光,網頁點擊點擊罪佳,看看網絡請求是調用的哪個API. 觸發(fā)的動作是什么赘艳,響應又是什么克握。
跑通代碼菩暗,你可能也可以看到停团,整體的部署流程是什么樣的掏熬,比如如何部署的旗芬?容器捆蜀?鏡像辆它?最后又是如何自動的部署到服務器上的娩井?
假如代碼沒跑通,那么你可能依賴沒搞好洞辣,或者設置沒搞好扬霜,或者需要走的步驟你沒執(zhí)行著瓶?
總之材原,跑通代碼很重要余蟹。
相同的道理威酒,有時候,你使用某個開源項目担钮,某個具體的用法文檔上寫的不是很清楚箫津,這個時候有可能你需要看看開源項目的測試文件,有可能你只是摘抄幾個測試文件中的函數送挑,自己運行起來,再修修改改纺裁,然后你可能就搞懂了具體怎么用了栋豫。
3、項目使用里哪些第三方庫谚殊、結合官方文檔使用第三方庫
- 絕大多少項目都需要依賴已有的成熟的第三方庫:節(jié)省時間成本
跑通代碼這一步丧鸯,應該就已經會有下載第三方庫的步驟了。
這些第三方庫嫩絮,不需要你使用的非常6丛肢, 你只需要知道如何使用即可。怎么知道如何使用剿干?
1蜂怎、看官方文檔
2、看不懂就Google 搜一搜能看懂的例子置尔,但只是作為輔助手段杠步,最主要的還是文檔
3、拷貝文檔例子榜轿,自己實驗下幽歼,發(fā)現問題,有時候你看到的以為會,其實不一定真會犀被,讓代碼跑起來很重要
4、換個例子员舵,結合自己的歷史經驗和現有的文檔注服,看看能不能換個例子再實現一下,能不能更優(yōu)化了你之前的想法鸭你,提供了更好的解決方案
4瓣窄、梳理項目結構
項目結構劝贸,講究的是如何組織的代碼層級結構瞎颗,體現在最終的效果上就是代碼文件是如何組織的了。
我之前非常崇尚領域驅動 DDD
項目的組織也一度按照的是 DDD 的指導思想:
- Domain 領域層
- Infra 基礎設施層
- UI 用戶UI 層
- Application 應用層
不過當然不是所有的項目都和你想象的一樣,受歷史的原因粉怕,項目的組織結構往往受第一個寫這個代碼的人的影響蛉谜,一定程度上反應了第一個寫這份代碼的人的編程風格筑辨。
好,這里當然不是講述個人編程風格問題。
好的項目組織:
- 好看:
這是第一印象,什么叫好看呢?項目組織清晰,一看就知道,哪部分是干什么的,實現了什么樣的功能。
- 可拓展:
特別是作為一個初始階段的項目,會頻繁變動歉嗓,這個時候拓展性带膀、可維護性的項目一定會給你解決掉諸多的問題敛纲。
- 低耦合
即相互之間的依賴少佩谷,即可實現功能稚补。低耦合性對于不斷變更的需求的初始項目來說,爽的一筆。
總之润绎,就算你不熟悉具體的代碼內實現什么樣的功能撬碟,僅僅看項目結構,你大概也能猜出來這個文件內的代碼大概是實現什么惶傻。對我來說,這就是好的項目組織結構否过。
假如遇到的項目組織驼卖,確實不是上文講的那么優(yōu)雅催烘,那怎么辦?
- 你確定需要待這家公司缎罢?確定伊群。好考杉,你的機會來了。你可以進行重構舰始。重構意味著你對代碼需要非常熟悉崇棠。假如你有這個任務,相信我蔽午,你能熟悉這個項目的易茬。
好,這節(jié)主要是梳理項目的組織及老,知道哪塊負責什么任務抽莱。
可能光看還不容易明白,不利于思維的呈現骄恶。那怎么辦食铐?
- 筆記本上寫寫畫畫,流程圖搞起來
- 思維導圖畫起來
假如還是不懂僧鲁,那怎么辦虐呻?
兄dei, 問問會的人羅。
面子是最不值錢的玩意寞秃,不懂就問
5斟叼、仿照項目實現另一需求
簡單的說
- 仿照或者優(yōu)化項目結構
- 借用相同的技術棧,自己尋找類似的例子春寿,從頭到尾的實現:自己設計朗涩、自己編碼、自己測試绑改,體量可以比真實的項目小很多谢床,但核心的功能還是要實現,數據量不一定相當厘线。一句話說:麻雀雖小识腿、五臟俱全
- 講出來:結合你自己實現的這個需求,編碼完成之后造壮,講出來渡讼,相信我,會對你有好處的耳璧。
好硝全,本節(jié)大概這樣,最重要的是第五條楞抡。
再會伟众,我是謝偉。