<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          是誰(shuí),代碼毒害我

          共 2601字,需瀏覽 6分鐘

           ·

          2023-09-22 11:15

          大家好,我3y啊。本來(lái)我以為我平時(shí)在公司亂寫代碼,已經(jīng)是一件很過(guò)分的事了。這兩天遇到的問(wèn)題,我覺(jué)得是真在代碼里下毒,決定下班就回家寫篇文章一吐不快。

          不知道大家有沒(méi)有聽(tīng)過(guò)「二方庫(kù)」,首先來(lái)科普一下什么是二方庫(kù)?

          • 一方庫(kù)指的是本項(xiàng)目中的依賴
          • 二方庫(kù)指的是公司內(nèi)部其他項(xiàng)目提供的依賴
          • 三方庫(kù)指的是其他組織、公司等來(lái)自第三方的依賴

          我想象中的二方庫(kù):

          • 是公共的包。給各個(gè)系統(tǒng)去引用,這樣就不用每個(gè)系統(tǒng)都寫第二遍相同的邏輯。實(shí)際上在項(xiàng)目里,很多就是復(fù)制粘貼到多處,我他媽直接CV
          • 是版本控制和使用規(guī)范化。實(shí)際的使用場(chǎng)景,光一個(gè)log就有l(wèi)og4j log4j2 logback ,redis客戶端光jedis就一堆版本,你升級(jí)了業(yè)務(wù)根本不升級(jí)。業(yè)務(wù):我用得好好的,我升級(jí)個(gè)毛

          OK,有了二方庫(kù)的基礎(chǔ)了以后,來(lái)介紹下我這兩天遇到的奇葩事了。我這項(xiàng)目被maven管理,有十幾個(gè)模塊,其中xxx-common是一個(gè)二方庫(kù),xxx-service是主要的業(yè)務(wù)邏輯代碼,這個(gè)項(xiàng)目都在同一個(gè)Git倉(cāng)庫(kù)下做代碼版本控制。

          最近因?yàn)檎{(diào)用外部接口的api要升級(jí)了,而外部接口的api的url是寫在二方庫(kù)xxx-common模塊上。這本身是很合理的事,其他需要用到這個(gè)外部api的模塊就不用在自己的系統(tǒng)上定義對(duì)應(yīng)的url咯。

          像這次升級(jí)的話,那只要改一處就好了,其他的模塊只要引入新的二方庫(kù)版本就OK咯,這很合理。

          然而,我發(fā)現(xiàn)這個(gè)url被復(fù)制到處都是,一改就改了好幾個(gè)模塊。就比如像xxx-service 模塊明明就有引入xxx-common模塊,但它還是單獨(dú)在系統(tǒng)上聲明了url。

          不過(guò),這不是事,改起來(lái)很方便,現(xiàn)在ide太強(qiáng)大了,直接全局匹配出來(lái),全局替換就完事了。

          但是,為了后續(xù)好維護(hù),我是想統(tǒng)一把這塊抽取到xxx-common模塊就可以了,后面就真的只改一處。然而,我發(fā)現(xiàn)了個(gè)事,各個(gè)模塊依賴xxx-common的版本都不太一樣

          比如xxx-service依賴的xxx-common0.0.1版本,而xxx-service-v2依賴的xxx-common0.0.3版本,我隱約感覺(jué)到不對(duì)勁了,但我還是繼續(xù)往下干。

          顯然,我肯定是基于現(xiàn)有xxx-common最新的版本的基礎(chǔ)上去做改動(dòng)的咯。整個(gè)項(xiàng)目的git倉(cāng)庫(kù)用的是master分支,我就理所當(dāng)然地在master分支上修改xxx-common模塊。

          很快啊,我改完了,我把xxx-service依賴的xxx-common,升級(jí)到我新發(fā)的版本之后,發(fā)現(xiàn)項(xiàng)目壓根就部署不起來(lái)。我一想,沒(méi)理由啊,我就改了這么點(diǎn)東西,憑啥沒(méi)有起來(lái)啊。就只是一個(gè)變量啊,大哥

          看了半天,哦,原來(lái)xxx-common這個(gè)模塊不是在master分支上改的,是由另外的分支去變更它的代碼。你能理解嗎,我是理解不了,你這樣玩,你為啥在同一個(gè)Git倉(cāng)庫(kù)下管理啊!!!

          這我忍了,我就切到對(duì)應(yīng)的分支上去改吧。找出問(wèn)題了以后,這也很快啊,我一會(huì)就搞掂了,于是我又重新打了個(gè)新的版本deploy在maven的倉(cāng)庫(kù)上,把xxx-service模塊又重新部署起來(lái)。

          阿歐,發(fā)現(xiàn)xxx-service模塊又沒(méi)起來(lái),缺了別的java依賴。我又再次核對(duì)了下,分支是沒(méi)錯(cuò)的,版本也是在xxx-service之前的所依賴的版本基礎(chǔ)上改的,改動(dòng)也就一個(gè)變量,這憑啥沒(méi)起來(lái)啊!

          怎么想都不對(duì)勁,后來(lái)我就去把我打的jar包跟上一個(gè)版本的jar包做了下對(duì)比(idea可以對(duì)比兩個(gè)jar包的區(qū)別,又學(xué)到了些知識(shí)了)。

          我發(fā)現(xiàn),這差異不僅僅是我改的變量啊,還有好十幾個(gè)類啊。這怎么解釋呢?我能想到唯一的解釋就是:上一個(gè)人把包發(fā)布到maven了,但是沒(méi)有提交&推送(commint&push)代碼

          擦,這么狠毒啊!這怎么玩啊,花了我兩天時(shí)間搞這個(gè)了,正常的需求我都還沒(méi)做啊。原來(lái)可以這樣在代碼里下毒啊。


          END


          Java項(xiàng)目訓(xùn)練營(yíng)

          我開(kāi)通了項(xiàng)目股東服務(wù),已經(jīng)有不少消息推送平臺(tái)項(xiàng)目股東拿了阿里/vivo等大廠offer了。我是沒(méi)找到網(wǎng)上有跟我提供相同的服務(wù),價(jià)格還比我低的

          ??一對(duì)一周到的服務(wù):有很多人的自學(xué)能力和基礎(chǔ)確實(shí)不太行,不知道怎么開(kāi)始學(xué)習(xí),從哪開(kāi)始看起,學(xué)習(xí)項(xiàng)目的過(guò)程中會(huì)走很多彎路,很容易就迷茫了。付費(fèi)最跟自學(xué)最主要的區(qū)別就是我的服務(wù)會(huì)更周到。我會(huì)告訴你怎么開(kāi)始學(xué)這個(gè)開(kāi)源項(xiàng)目,哪些是重點(diǎn)需要掌握的,如何利用最短的時(shí)間把握整個(gè)系統(tǒng)架構(gòu)和編碼的設(shè)計(jì),把時(shí)間節(jié)省下來(lái)去做其他事情。學(xué)習(xí)經(jīng)驗(yàn)/路線/簡(jiǎn)歷編寫/面試經(jīng)驗(yàn)知無(wú)不言

          ??本地直連遠(yuǎn)程服務(wù):生產(chǎn)環(huán)境的應(yīng)用系統(tǒng)肯定會(huì)依賴各種中間件,我專門買了兩臺(tái)服務(wù)器已經(jīng)搭建好必要的環(huán)境??,在本地就可以直接啟動(dòng)運(yùn)行體驗(yàn)和學(xué)習(xí),無(wú)須花額外的時(shí)間自行搭建調(diào)試。

          ??細(xì)致的文檔&視頻:巨細(xì)致的語(yǔ)雀文檔11W+ 字,共106個(gè)文檔,項(xiàng)目視頻還在持續(xù)制作更新中(20個(gè)),不怕你學(xué)不會(huì)。

          ??付費(fèi)社群優(yōu)質(zhì)的社群里需篩選過(guò)濾,學(xué)習(xí)氛圍是很重要的,多跟同輩或前輩聊聊,會(huì)少走很多彎路??

          ??清爽干練commit:專屬股東倉(cāng)庫(kù),一步一步從零復(fù)現(xiàn)austin,每個(gè)commit都帶著文檔&視頻學(xué)習(xí)。

          如果想獲取上面的權(quán)益,可以看看??Java項(xiàng)目訓(xùn)練營(yíng)

          瀏覽 3659
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  2024AV天堂 | 亚洲精品中文字幕在线观看 | 国产亚洲aa级大片在线 | 性爱成人在线 | 最近日韩中文字幕 |