為什么祖?zhèn)鞔a會(huì)被稱為屎山

作者 |?賽博鐵犁
有一天,有幾條蟲子,干擾了老板賺錢,老板希望你能抓住它們。
你帶著年輕的銳氣,青春的活力,學(xué)藝多年積累的程序設(shè)計(jì)藝術(shù),打開了公司的代碼倉庫。
遠(yuǎn)看,似乎一個(gè)運(yùn)轉(zhuǎn)的機(jī)器,巨大的代碼堆積在一起形成了大致的輪廓,蠕動(dòng)著前進(jìn)。
湊近了一看,在不凈的框架中,亂碼般的語句在運(yùn)轉(zhuǎn),像生了麻風(fēng)病的蛞蝓一樣在噴吐,粘稠的水在流動(dòng),而穿著格子衫的人群則在焰柱旁圍成了一個(gè)半圓,這就是碼農(nóng)的儀式。他們環(huán)繞著那不可名狀植物,不斷的伸手進(jìn)去撥弄,又不斷的掏出一些東西填上去,使他堆積的更高,為了防止到他,又掏出黏糊糊的糊糊,用力的涂抹,試圖把它們黏在一起。
這是一個(gè)前人留下的屎堆起來的一個(gè)克蘇魯縫合怪,看起來搖搖欲墜,有無數(shù)的蟲子爬來爬去。但勉強(qiáng)堆起了山一樣的形體,蠕動(dòng)著為老板賺錢。

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