程式猿的終極噩夢,祖傳程式碼,一動修半年!

九章演算法發表於2020-10-26

1024程式設計師節即將到來,今天我們就來聊點輕鬆詼諧的話題——那些讓人好氣又好笑的祖傳程式碼

很多萌新們都經歷過:兢兢業業的檢查程式碼,結果挖出一堆不知多久以前的漏洞。當你信心滿滿準備修復,結果剛動手,整個系統就崩了。

這些前人貢(wa)獻(keng),也被稱為祖傳程式碼,是一代又一代程式設計師的噩夢。

九章演算法班 2020版》擴充5倍課時

課程亮點:

  • 疫情應對版《九章演算法班》,令狐沖老師擴容5倍課程量
  • 8周內講解57個面試核心高頻考點
  • 課程內容由9章節增加至43章

7天視訊回放,戳我即可免費報名

什麼是祖傳程式碼?

祖傳程式碼(legacy code),就字面意思而言,就是老程式猿留下“寶藏”程式碼。可能當初寫程式碼的人早就離開了,但程式碼邏輯混亂又無註釋,後人完全看不出來寫的是個啥!

要麼就是前人寫下的時候就不完美,歷經許久,業務需求也變了,隨便一動就到處是問題。

比如,你可能會遇到這樣的程式碼:

//add by xxxx 201x-x-x:

這是一段神奇的程式碼。。反正這麼寫就對了

幾乎每家公司的程式碼都有“歷史遺留問題”,而越是大公司,情況越嚴重。

亞馬遜的工程師形容他們的程式碼:“一座很大的屎山,你見過的最大的山,每次你想修正一個bug,都得爬到屎山的正中心去”。

最最可怕的是,有些祖傳程式碼,你一動, 就再也回不去了。


(圖源自知乎網友:同一輪月亮)

用這張圖再形象不過了?

可以用新程式碼替換祖傳程式碼嗎?

為什麼新程式碼不如舊的好?彆著急反駁!先聽我說完。

舊程式碼是已經執行過、測試過的。無數的bug在被發現前都上線執行過,發現之後程式設計師們可能在花了好些日子才修復了這些bug。

這種修復可能是一行程式碼,也可能是幾個字元,無數的時間和精力都花在了這些bug修復上。

當你決定拋棄這些舊程式碼從零開始的時候,也丟掉了前人的全部努力。而重寫可能會帶來更大的風險。

對技術leader來說,重寫程式碼也是一個異常艱難的決定。因為從公司層面說,重現程式碼甚至會威脅產品的市場競爭力。

一旦決定重寫程式碼,那麼與競品相比,你可能落後了2~3年——在軟體行業,這時間可夠長的。

新程式碼帶不來產品功能提升

即便新程式碼能實現舊程式碼搭建的所有功能,但實際上,重寫用的新技術、新語言、新框架並沒有給產品帶來質的飛躍。

更不用說這個耗時又耗力的過程,還容易遇到一些意外:

當你認為舊程式碼稀爛,那要怎麼辦?

先冷靜一下,畢竟這些舊程式碼已經上線,也在生產環境中經受住了考驗。這時候,可以從三個方面入手理解程式碼、改善程式碼

現實情況是,你重寫一遍前人的程式碼,很有可能會再走一遍前人的老路。所以,面對糟糕的ShitCode,不要想著重寫。如果還能找到寫程式碼的人,先狠狠K一頓再說吧!

相關文章