程式猿的終極噩夢,祖傳程式碼,一動修半年!
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一頓再說吧!
相關文章
- 程式設計師的最大噩夢程式設計師
- 為什麼程式碼重用仍然是一個安全噩夢
- 結對程式設計,我的噩夢程式設計
- 祖傳程式碼如何優化效能?優化
- 如何優化 Vue 祖傳程式碼優化Vue
- Java 開發者的程式設計噩夢,為什麼你的程式碼總有 bug??Java程式設計
- 當機噩夢,CTO也躲不過凌晨改程式碼
- 程式設計師的最大噩夢是什麼?程式設計師
- 程式設計師最恐怖的噩夢是什麼?程式設計師
- 一名合格的程式猿修煉手冊
- 程式設計師的 13 種噩夢,你遇到過哪些?程式設計師
- Stupid && 祖傳Fortran程式碼救贖之路(編譯Dll)編譯
- 傳說中程式猿與程式媛的後代?
- 網頁背景音樂程式碼 — 終極篇網頁
- [譯] 不用祖傳祕方 - 寫好程式碼的幾個小技巧
- 比特幣的噩夢成真:網路處理能力達到極限比特幣
- 程式猿的簡歷一
- Android App程式碼混淆終極解決方案AndroidAPP
- 零經驗噩夢般的面試面試
- 聞香識程式碼,什麼是衡量程式碼質量的終極標準?
- 程式猿的一些幽默
- 遊戲設計師的5大噩夢遊戲設計師
- 小黃鴨除錯法-程式猿修煉之道除錯
- 世界盃所使用的應用程式帶來資料安全和隱私噩夢
- 夢斷程式碼讀書筆記(一)筆記
- C語言是程式設計小白的噩夢,WEB開發成為轉行程式設計師的福音!C語言Web行程程式設計師
- 一個老程式猿的焦慮
- 一個老程式猿的分享4
- 從猿到IT程式猿
- 面對祖傳屎山程式碼應該採用的5個正確姿勢
- 普通程式猿和大師級程式猿的區別
- 程式猿必備的17款最佳的程式碼審查工具
- 一隻視訊程式猿的移動直播SDK初體驗
- 一局被調成噩夢難度的遊戲:“紅米闖關”遊戲
- 一行程式碼造成大量訊息傳送失敗?RocketMQ神解決之終極踩坑經驗行程MQ
- 程式猿與程式媛
- 真正的程式猿在此 想讓它幫你修電腦麼?
- 一個老程式猿的焦慮3