為什么祖?zhèn)鞔a會被稱為“屎山”?


有一天,有幾條蟲子,干擾了老板賺錢,老板希望你能抓住它們。

圖片來自 Pexels
你帶著年輕的銳氣,青春的活力,學藝多年積累的程序設計藝術,打開了公司的代碼倉庫。
遠看,似乎一個運轉的機器,巨大的代碼堆積在一起形成了大致的輪廓,蠕動著前進。
湊近了一看,在不凈的框架中,亂碼般的語句在運轉,像生了麻風病的蛞蝓一樣在噴吐,粘稠的水在流動,而穿著格子衫的人群則在焰柱旁圍成了一個半圓,這就是碼農的儀式。
他們環(huán)繞著那不可名狀植物,不斷的伸手進去撥弄,又不斷的掏出一些東西填上去,使他堆積的更高,為了防止到他,又掏出黏糊糊的糊糊,用力的涂抹,試圖把它們黏在一起。

你滿心熱血,要對這座山進行清理,使它成為一個魯棒的鋼鐵巨獸,可以隨時更換最新的部件,奔騰如飛,堅固異常,帶著兄弟們走向人生巔峰。
你經過縝密的分析,順著蟲子留下的痕跡,終于找到了問題的源頭,發(fā)現(xiàn)一坨很多年前某碼農因為時代局限或者水平有限拉的陳年舊屎。
你覺得只要對它改良一下,梳理清楚結構,加強判斷與容錯,就可以變化成一個鋼鐵部件,讓這坨怪物離巨獸更近一步。
你用力的挖掘其中的信息,卻發(fā)現(xiàn),事情沒有那么簡單,這一坨實際上不是孤立的一坨,而是和整個山體融合在一起。
或者說,這座山實際上是一坨坨粘稠滑膩的克蘇魯,通過無數(shù)的觸角和粘液連接在了一起,這些克蘇魯伸出無數(shù)的觸角,伸進這座山體中未知的角落。
有看起來結構相同,但是出現(xiàn)了幾十上百次的重復邏輯,有無數(shù)道不知道伸向何處的判斷分支。
有七零八落到處都是又無法解釋的神秘數(shù)字,有從表面直接伸向最底層的神秘調用。
還有猜不出,看不懂,無法預計什么時候會觸發(fā),什么時候會爆發(fā)的無數(shù)定時器。
還有無數(shù)神秘的線程在獨立的掛在那里,猜不出哪個什么時候會忽然啟動,什么時候會忽然掛起,什么時候會忽然互相搶資源而死鎖,哪些資源會莫名其妙的被改動。
神秘的鏈接,神秘的任務隊列,神秘的池,神秘的環(huán)形緩存,神秘的堆棧。
他們耦合在一起,互相支撐,構成了一坨更大的克蘇魯屎怪,緩慢的蠕動。
你極其困難的清理和修改了其中的一點點內容,讓這一點點的內容脫離出耦合態(tài),看起來清晰一點。
結果,忽然屎山對面十萬八千行外,你永遠意想不到的一塊功能,忽然掛了。
一個你完全在工作上沒接觸過的同事,通過他的盤查,發(fā)現(xiàn)是他維護的一個函數(shù)/方法、類、線程、內存塊,池,和你改動的部分是深度耦合的,你的解耦導致了難以理解的錯誤使他們的部分產生了錯誤。
于是你被罵了,你只能再退一步,在一個更小的范圍內進行調整,但是發(fā)現(xiàn),蟲子不止是由這一塊構成的,于是你追蹤者蟲子的足跡,去改良一個一個的模塊。
在經歷了一輪又一輪的批評,幾乎結識了全公司所有模塊的負責人之后,你終于抓住了一條蟲子。但是在這個漫長的過程中,你早已忘卻初心。
在無數(shù)次的趕工加班熬夜的迷糊中,被同事老板挨罵后的憤懣中,表白失敗/和女朋友吵架/發(fā)現(xiàn)自己頭頂有點綠的低落中。
無數(shù)次當做臨時代碼寫下,計劃單元測試完成后就重寫卻忘記的過程中,因為偷懶或者不舍得打斷思路而而懶得抽出輪子而產生的超大代碼塊中。
留下了無數(shù)看起來結構相同,但是出現(xiàn)了幾十上百次的重復邏輯。無數(shù)道不知道伸向何處的判斷分支。
大量的無法解釋的神秘數(shù)字。從表面直接伸向最底層的神秘調用。猜不出,看不懂,無法預計什么時候會觸發(fā),什么時候會爆發(fā)的無數(shù)定時器。
無數(shù)猜不出哪個什么時候會忽然啟動,什么時候會忽然掛起,什么時候會忽然互相搶資源而死鎖,莫名其妙改動資源的神秘線程。
神秘的鏈接,神秘的任務隊列,神秘的池,神秘的環(huán)形緩存,神秘的堆棧。
你要抓的哪條蟲子確實抓出來了。然而,在你沒看到的地方,隨著運轉,更多的新的蟲子正在茁壯的成長。
這時,你突然發(fā)現(xiàn)你的腳抽不出來了,幾條觸手順著你的腿向上攀延,你的手被深深地吸入泥沼一樣的屎山,你使盡全力想要抽出胳膊,但越是掙扎,陷得越深,仿佛屎山中心有一個冰冷的黑洞,要將所有接近的物體吞噬殆盡。
你的精氣在一點點流失,一種極度的疲憊,但是又釋然的感覺涌了上來。
此刻,你覺得舒適又滿足,漸漸地閉上了雙眼,你甘愿奉獻頭發(fā)與生命,將自己化作一塊補丁,維系著系統(tǒng)的茍延殘喘。
它再也沒法離開你了,你和你的頭發(fā),成了它的一部分。
不知道過了多久。終于又有一條蟲子在運行中暴露,干擾了老板賺錢。
老板又安排了一個年輕人來抓住這條蟲子。這個年輕人帶著銳氣,青春和活力來到這座山前。
看到這搖搖欲墜的克蘇魯大山,不僅倒吸一口冷氣。
oh shit!shit mountain!


程序員過關斬將--少年派登錄安全的奇幻遐想

程序員過關斬將--請不要誤會redis 6.0 的多線程
