雷學委趣談編程 大型鞋廠與開發工程化

      網友投稿 726 2022-05-30

      朋友們,小白奶奶上次聽雷學委趣味故事學會了類和對象。

      回去狂寫代碼,寫了很多代碼,面向對象,繼承,多態,入門,初級的統統都寫了。

      雷學委既想表揚,又不能! 畢竟,老人這樣猛敲代碼,對身體不好! 不過老人代碼寫的很不錯,小白看了想要整理匯編成一個新手填坑展示項目(挺有頭腦啊!不愧是遺傳!)

      跑過來找學委,你看我奶奶這代碼,好多個文件夾,請問怎么樣把這些組織好,方便代碼分享啊?

      哇,項目工程化這一塊很重要啊,很多小白寫很多代碼最后還是零散分布的,沒有形成自己的積累,其實很虧!

      效果如下,可惜端午節過去太久,雷學委只能順著鞋廠大學問再深入講解,不然給大伙講如何工程化包粽子也不是不行呢。

      [video(video-ZnIFrLb2-1624973751272)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=291486723)(image-https://ss.csdn.net/p?http://i0.hdslb.com/bfs/archive/8f14917231c1a3e7800ac975461eb21ba09ab457.jpg)(title-雷學委趣味編程配套食用:一個Java項目的簡單工程化)]

      來,我們一起看看,王總的大型鞋廠一條龍

      大企業家王總,雖是半路出家做鞋子,可做事一點也不迷糊。

      他經歷過一塊塊磚頭,一車車水泥沙石鋼筋堆砌成一層層樓房的時候,也經歷過一棟棟一片片的房屋出售的沖鋒時刻,啥場面沒見過。

      自然想的已非個人親手做一只只鞋起家,而是直接聯系了很多大鞋廠老板,說要給他們投資,結果參觀學習了3個月,探訪了不少不同規模鞋廠。

      王總:想要搞大規模,就必須把體系做好。所以轉型做鞋子,第一步,得把整個工程生產線搭建好,不然別的都是白干費力!

      雷學委認為做軟件也是如此,工程化是很重要的。高效的組織代碼,構建高質量代碼產品,對個人對企業都是很有幫助的!

      小白直呼,商人特么精明!這手段玩的是一套一套的,要是王總寫代碼不知道得多6!

      鞋子是怎么來的?

      原料: 鞋底,鞋帶,皮革,縫合線等等的。這些組合而成就是一只鞋子,然后再成對匹配。

      這些肯定都標準化,每雙鞋都是同一系列的步驟照做的,不然最好做出來的鞋子形狀千奇百怪,怎么做好銷量?(又不是搞個人定制鞋款的)

      說到這,小白好像突然開竅了,插嘴說:您是不是想說,這些玩意就跟我們的源代碼一樣?

      小白激動地說:做好的鞋子,那就是相對于發布的一個jar包啊?!

      哈哈哈,小白說出這個理解,學委很開心。

      這樣講解工程化就好理解了!這里補充一下jar包,這是我們java同學有時候寫了一些代碼直接打個jar文件,包含程序發給別人直接運行。有點類似python的whl包,但是有區別,whl包只能用pip安裝后在代碼使用。

      不錯喲! 小白悟性是越來越好了。

      小白又問,那繼續說說具體工程化吧?手動打包搞多了挺累的,有時候漏了被同學嘲笑還得再來!

      好的,讓我們繼續看看王總怎么做的唄。(下圖為鞋底機械自動成型)

      (圖片截圖自:如何做一雙適足的鞋子 — 自動制鞋生產線 )

      王總這個工廠做鞋車間基本上都是機械化自動的,加上最后少量的人工校準。

      整個制鞋大車間,有個機器負責把鞋底膜擺放好,傳送帶運到一個密閉小盒內,一個氣墊放上,高溫壓印。鞋底成型了。

      (圖片截圖自:如何做一雙適足的鞋子 — 自動制鞋生產線 )

      傳送到下一個鏈條,皮革準備好機器自動縫合,基本誤差很低。

      差不多了,最后上一個自動的拉伸鞋子看看生產的這個鞋子質量如何。

      這時候鞋子基本上好了,后期銷售再配點鞋帶就可以了。

      工程化/項目組織 是什么鬼呢? 就是通過一條紐帶把項目的代碼,文檔,測試,腳本等組織管理起來,目標是提供一個簡單的使用,比如mvn clean deploy直接發布jar包。或者npm run start去啟動一個前端項目。就只有這個好處嗎?

      在這里做Java的朋友,可以理解為一個流水線很方便的按個按鈕就將代碼生成jar包,接著可以自動發送jar包,也允許少量人工比如把jar包發給一些個人使用。

      回到實際項目中,這里拿一個Java項目來說

      在外面項目中,我們會把代碼,放在一些文件夾(package)中。

      然后也有一些啟動腳本(不同配件)放在特定目錄,測試代碼放在不同的目錄。

      然后用maven/gradle,里面使用了不同的插件(plugin)去運行代碼的編譯,代碼測試,編譯產物拷貝移動到特定目錄。

      然后用另一些插件去組織代碼。

      下面是一個真實的Shoe項目的“車間視圖”,下面再解釋。

      (IntelliJ開發工具視角,左邊文件目錄結構,中間為pom.xml, 右邊為構建生命周期)

      讓我們來看這個工作車間的一個產品作業線(一個子模塊leixuewei-classobject)。

      談談這個制鞋項目,編譯一個鞋子類,寫一個測試類,打包代碼為一個jar包。

      類似擺放鞋子原料,如上圖,我們開發需要把代碼相關文件放置好。

      如下圖,整個項目把代碼分為了兩個大目錄src/main(核心代碼) 和src/test (測試)

      src/main/java 負責放置項目的核心代碼

      src/main/resources 負責放置項目運行相關配置

      src/test/java 負責放置項目的測試代碼

      src/test/resources 負責放置項目測試相關配置

      做Java的同學經常會使用一個叫Maven的軟件工具,用它來管理項目的代碼,依賴,同時執行測試,跟打包。

      就像上面一個真正的制鞋子的車間圖一樣,Maven就像整個流水線系統一樣。制鞋車間分步驟的組裝鞋子,Maven分步驟地執行各個階段的插件編譯源碼(填充鞋底),執行測試(機械臂拉伸縫好的鞋子),打包代碼(自動配件分類包裝)。

      雷學委趣談編程 大型鞋廠與開發工程化

      具體工作如下:Maven這個工具根據pom.xml讀取項目組織,依賴,插件plugin(類似制鞋車間內的一些輔助維修工具)。

      maven-compiler-plugin : 這個插件負責編譯java代碼成class文件

      maven-surefire-plugin : 這個插件負責執行測試代碼

      maven-jar-plugin: 這個插件負責整理class和相關配置達成jar包

      maven軟件把這些插件綁定到了不同的軟件構建生命周期,這就像一條龍車間流水線一樣按照順序執行,把源碼轉化為最終產品。

      Maven 還能做的事情更多,這里只是展示了編譯打包了一個jar,它還能把jar包上傳到公共倉庫給其他開發下載使用呢。

      通過把整個項目使用Maven管理,以后需要打包項目,只需要運行mvn clean package就可以打包代碼了。

      這個命令就像,我們在制鞋車間,輸入指令一樣,車間根據指令執行對應的操作,保證了整個過程都是機械無人工參與,減少人為操作失誤導致的質量問題。

      小白聽完,滿臉高興,這個過程還能自動化的,原來編程這么有意思的!(可不,軟件世界只是現實世界的體現,對現實問題的抽象罷了!)

      總結

      好的項目工程化,可以把開發過程整規范管理。

      分好了不同車間,不同成員開發不同的模塊,大大減少互相干擾。

      而且前端后端工程化技術棧不一樣,大數據SparkJob項目也不一樣,但是整個過程是很類似的,規范的把開發原材料(源碼Java/Html/Js等等)轉化為高質量的輸出制品(jar包,zip包),也有構建好后直接把包分享和部署到測試環境運行的,甚至動態測試提升部署到線上的!

      這里有一個點很重要,工程化需要適度原則,雷學委建議讀者去參考對應語言的優秀開源項目的代碼工程化方式!

      學委見過把代碼一股腦打包的,幾個G,你就是上去改個標點符號也要打包半天,這不是好的工程化。

      也看過把十幾個類拆成6個項目,改一個類速度是快了,但是搞一個聚合功能,那你得跨組件修改代碼,多個重新運行打包,得不償失!

      小白直白的問:何時需要工程化調整?

      當你打包測試代碼這些時間大大超過開發寫代碼的時間,那你就得想想工程化是不是沒做好!!!

      另外,建議長期關注學習這個 =>雷學委趣味編程故事匯編。

      好了小白,學委這次分享就到這里,你回去告訴奶奶要多多注意身體,每天掌握一點點知識,勞逸結合更好呢!

      持續學習持續開發,我是雷學委!

      編程很有趣,關鍵是把技術搞透徹講明白。

      歡迎關注,還有盡情!

      參考鏈接

      本文的工程化展示項目

      Maven 一款Java項目組織利器

      如何做一雙適足的鞋子 — 自動制鞋生產線

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:性能監控之 Telegraf+InfluxDB+Grafana 實現結構化日志實時監控
      下一篇:SonarQube集成gitlab/jenkins
      相關文章
      狠狠亚洲狠狠欧洲2019| 国产亚洲漂亮白嫩美女在线| 亚洲国产精品专区在线观看| 亚洲日韩一区精品射精| 亚洲国产成a人v在线观看| 亚洲国产精品综合久久久 | 久久久久亚洲AV成人片| 婷婷久久久亚洲欧洲日产国码AV| 亚洲色爱图小说专区| 亚洲情综合五月天| 精品亚洲一区二区| 国产亚洲婷婷香蕉久久精品| 久久综合图区亚洲综合图区| 亚洲成熟xxxxx电影| 亚洲伦理一区二区| 亚洲视频在线观看网站| 亚洲av无码一区二区三区天堂古代 | 亚洲一区二区在线视频| 在线免费观看亚洲| 亚洲国产精品yw在线观看| 亚洲av无码片在线观看| 亚洲午夜无码久久久久小说 | 亚洲AV综合色区无码一二三区 | 久久精品熟女亚洲av麻豆| 国产亚洲日韩在线a不卡| 精品国产香蕉伊思人在线在线亚洲一区二区 | 亚洲人成图片网站| 亚洲精品国产suv一区88| 色偷偷亚洲男人天堂| 亚洲成a人一区二区三区| 久久久久亚洲爆乳少妇无| 亚洲综合精品香蕉久久网| 国产精品久久久亚洲| 亚洲视频精品在线| 亚洲国产亚洲综合在线尤物| 亚洲色大18成人网站WWW在线播放 亚洲色大成WWW亚洲女子 | 亚洲日韩av无码| 久久亚洲精品人成综合网| 亚洲不卡视频在线观看| 亚洲人成网站在线在线观看| 亚洲av午夜精品一区二区三区 |