自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

十年的老代碼,你敢動(dòng)?

移動(dòng)開發(fā)
你去問進(jìn)來5個(gè)多月還沒轉(zhuǎn)正的老同事,他告訴你他也不懂,讓你湊合著加個(gè)新接口實(shí)現(xiàn)了功能就行。加了新功能就行。

[[165453]]

怎樣不讓猴子吃香蕉

你入職一家新單位,被告知需要維護(hù)一個(gè)老產(chǎn)品,經(jīng)理找質(zhì)管給你開通了svn權(quán)限,告訴你遷出哪個(gè)分支——就是那個(gè)十年前已經(jīng)定型的分支,就是那個(gè)超過6代程序員維護(hù)過的分支——然后告訴你說,就在這個(gè)分支上改,添加一個(gè)新接口,以便支持H5 Video。

于是你開始看代碼,云山霧罩,各種痛苦,完全搞不懂業(yè)務(wù)邏輯和代碼的關(guān)系,也鬧不明白這塊代碼為什么這么寫那塊代碼是幾個(gè)意思。你戰(zhàn)戰(zhàn)兢兢如履薄冰思前想后寸步難行。

你去問進(jìn)來5個(gè)多月還沒轉(zhuǎn)正的老同事,他告訴你他也不懂,讓你湊合著加個(gè)新接口實(shí)現(xiàn)了功能就行。加了新功能就行。

你去問干了快一年的資格更老的同事,他叮囑你千萬別動(dòng)里面的代碼,千萬別管里面什么樣,就在外面包一層,先交付新功能,其它的有時(shí)間再說,里面的邏輯十年沒人動(dòng)過了,沒有一個(gè)人能說清楚怎么回事,你要是改,一不留神就遍地狼煙。

你怎么辦?

怎樣不讓猴子吃香蕉

我想起來猴子吃香蕉的實(shí)驗(yàn):

鐵籠里關(guān)了五只猴,實(shí)驗(yàn)者放進(jìn)一掛鮮嫩甜美的香蕉,五猴頓時(shí)興奮起來,環(huán)視了周圍,其中一只率先伸手去抓。這時(shí),實(shí)驗(yàn)者以高壓水槍沖擊,包括那四只僅有念頭尚未行動(dòng)的,也受到了懲罰。

過了會兒,看看沒有動(dòng)靜,水果香氣四溢,又一只猴躍躍欲試竄到香蕉前,高壓水槍的集體懲罰再次啟動(dòng)。如此這般幾個(gè)回合下來,猴都變得老實(shí)了,眼睜睜看著令之饞涎欲滴的果實(shí),竟無一只敢再嘗試——因集體受罰的經(jīng)驗(yàn)令之膽寒。

此時(shí),實(shí)驗(yàn)者撤出一只水淋淋渾身發(fā)抖之猴,換進(jìn)只新猴,這個(gè)不知天高地厚的家伙一進(jìn)籠就奔 香蕉而去;這時(shí),一種現(xiàn)像出現(xiàn)了:四只吃盡苦頭的猴一擁而上,撕扯、阻撓這冒失鬼,不讓它接近深具誘惑力的美味,以免大家跟著受罪。

至此,高壓水槍這專政手段暫且擱置,威懾效果依舊。等猴子一只只置換完畢,五只新猴面對香蕉皆不敢造次,個(gè)個(gè)循規(guī)蹈距,成就了“自律”的一群。

在這個(gè)籠里一個(gè)奇異的景象出現(xiàn)了:猴們最愛吃的香蕉,成了“禁果”!

    ——2006年第 3 期 《隨筆》朱家泰

關(guān)于老代碼的禁忌

[[165454]]

對程序員來講,維護(hù)老代碼是最惡心的事兒之一。沒說的,就是惡心,公認(rèn)的惡心,連我這種自認(rèn)為隨意、靈活、代碼適應(yīng)性強(qiáng)、沒有原則的老程序員也覺得維護(hù)老代碼是一種罪。如果你恨一個(gè)程序員,就讓他去維護(hù)年久失修搖搖欲墜的老代碼吧。

然而,本文開始時(shí)提到的情況卻幾乎是每一個(gè)程序員都會碰見的。老代碼啊,我們恨之厭之煩之遠(yuǎn)之卻不可棄之。對一家軟件企業(yè)來講,老代碼就是資產(chǎn),是多年積累下來的核心資產(chǎn)和重要競爭力。尤其是軟件產(chǎn)品,一份代碼先后幾波人維護(hù)過是常有的事。

這種時(shí)候,老代碼就老而成精有了生命,每當(dāng)有新人進(jìn)來,它都會用特有的超出我們耳力邊界的高頻發(fā)出聲音:警告,警告,一波新程序員正在趕來,快給它們點(diǎn)厲害殺殺它們的士氣。

而且,部分熟悉老代碼的老程序員也會諄諄告誡我們,這幾個(gè)文件不要?jiǎng)?,這幾個(gè)類不要?jiǎng)?,這里一改就奔潰,那里一改就連不上服務(wù)器,雷區(qū)標(biāo)識很多。還有那一進(jìn)來就因?yàn)楸桓嬲]而根本就沒看過老代碼的程序員也會告誡我們,那代碼誰也不懂,多少年沒人動(dòng)過了,不動(dòng)為妙,免惹麻煩……

故事就這樣發(fā)生了,禁忌就如此這般傳承下來。我們知道那里可能有問題,可是沒人敢去動(dòng)它,等最后一個(gè)熟悉一部分老代碼的程序員悠然遠(yuǎn)去,此地空余嘆息,從此以后,新來的程序員就成了想吃香蕉的猴子。

動(dòng),還是不動(dòng)?

老代碼成了禁忌,我們往往被迫(沒時(shí)間或不愿意或害怕或不屑)在漂浮海面的冰山的尖尖上修修補(bǔ)補(bǔ),深入了解深層代碼成了誰也不愿言說的痛。

然而都不懂看代碼都不動(dòng)老代碼,老代碼只能越來越老越來越陳腐,越來越?jīng)]人敢動(dòng)。越往后動(dòng)的代價(jià)越高越?jīng)]人敢動(dòng)。這對公司和團(tuán)隊(duì)都不好。裹一層又一層,終將積重難返成為裹腳布,無人問津。

而一旦老代碼沒人能夠把握,這些作為資產(chǎn)的代碼實(shí)際上已經(jīng)丟了,不再有價(jià)值增長了,原本領(lǐng)先的優(yōu)勢隨著同行們百舸爭流的追趕漸漸失去了。

這是對企業(yè)是一種損失。讀程序員其實(shí)也是一種損失。

為什么這般講?

情人還是老的好

程序員有個(gè)毛病:自己不寫文檔卻老抱怨別人的代碼沒文檔,而碰見了有文檔的代碼卻又往往棄文檔如敝履。所以,業(yè)界流傳一句話:代碼即文檔。所以,業(yè)界的代碼和文檔,少見匹配的。

哇咔咔咔,對吧。

所以,我們只能接受這個(gè)現(xiàn)實(shí):代碼即文檔。

所以,對維護(hù)老產(chǎn)品的程序員來講,要想弄明白老產(chǎn)品的邏輯,就只要如下兩個(gè)辦法:

  • 找到熟悉產(chǎn)品的前輩,讓他給你講講。如果你找了產(chǎn)品經(jīng)理,他只能告訴產(chǎn)品設(shè)計(jì)上如何如何。如果你找了程序員,他通常會說就是這樣那樣,然后說一句高深莫測又拉仇恨的話:看看代碼就明白了。
  • 自己啃代碼,啃代碼,啃代碼。

Ok,維護(hù)舊產(chǎn)品,弄明白產(chǎn)品設(shè)計(jì)邏輯和代碼實(shí)現(xiàn)邏輯是非常重要的。

對于本文一開始提到的問題,其實(shí)也可能有在外圍包裝的辦法,比如你封裝一個(gè)本地的HTTP Server,用舊API拿到數(shù)據(jù)作為HTTP流轉(zhuǎn)發(fā)一下就能支持H5 Video標(biāo)簽了。也可能很多情況都存在折衷的替代辦法。

然而,能弄懂代碼是如何實(shí)現(xiàn)產(chǎn)品和業(yè)務(wù)的,還是有非常重要的好處——對程序員來講很重要的好處:

文檔是會過時(shí)的,代碼是不會說謊的,讀懂代碼,你就真真正正明白了業(yè)務(wù)是如何實(shí)現(xiàn)的。對于沒人敢動(dòng)而又核心的老代碼,你搞明白了,就占領(lǐng)了戰(zhàn)略要地。

這里我要引用格力空調(diào)的一句廣告詞:掌握核心科技。不管這是吹的還是怎的,話說得不錯(cuò),掌握核心科技才有競爭力,對程序員來講也是一樣,唯有掌握核心業(yè)務(wù)和代碼,才能彰顯自己的價(jià)值。

除此之外,讀代碼也是非常重要的學(xué)習(xí)途徑,尤其是經(jīng)歷過線上考驗(yàn)的代碼,必然尤其過人之處。在閱讀的過程中,我們可以學(xué)到很多東西,既可以學(xué)到業(yè)務(wù),也可以學(xué)到設(shè)計(jì)。退一萬步講,即便你認(rèn)為你水平遠(yuǎn)超一般人屬于一針頂破天的那位,也還是可以從當(dāng)時(shí)、當(dāng)?shù)氐倪x擇中學(xué)到東西:見賢可以思齊,見過可以自省。

所以,我的主張是:老代碼,動(dòng)啊,為什么不動(dòng)!

不能拒絕時(shí)就接納,無需排斥,何時(shí)何地都可以修行,只要有心,處處都是成長的機(jī)會。最不濟(jì),也鍛煉了閱讀代碼的能力,庖丁解牛之技成了,也可以在將來以無刃入有間,發(fā)揮用武之地。

至于怎么讀代碼改代碼,相信比學(xué)宋仲基撩妹容易多了,一句話:多讀讀就好了。當(dāng)然展開來講也可以有很多技巧,我后面會有一篇文章來談。

責(zé)任編輯:倪明 來源: 簡書
相關(guān)推薦

2019-12-13 16:08:57

戴爾

2019-10-09 13:17:49

智能手機(jī)舊手機(jī)系統(tǒng)

2024-02-05 10:10:06

Vue策略編譯

2022-03-28 11:41:21

物聯(lián)網(wǎng)物聯(lián)網(wǎng)市場智能電網(wǎng)

2012-07-16 13:18:35

2018-08-29 18:53:44

2022-03-18 13:46:20

物聯(lián)網(wǎng)數(shù)據(jù)技術(shù)

2012-02-07 09:58:27

2010-11-08 10:14:34

企業(yè)網(wǎng)絡(luò)網(wǎng)絡(luò)設(shè)備管理

2020-11-05 22:59:15

技能工業(yè)革命技術(shù)

2019-07-17 20:27:04

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2019-04-23 12:00:05

開發(fā)技能代碼

2013-01-14 10:04:16

2010-05-28 10:24:10

盛大游戲

2011-09-15 21:52:53

2018-11-16 09:29:59

2013-04-15 13:53:27

編程程序員

2010-11-17 11:02:49

思科Juniper

2014-07-09 09:32:39

2021-08-18 06:48:52

編程語言開發(fā)IT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號