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

前言

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

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

你去問(wèn)進(jìn)來(lái)5個(gè)多月還沒(méi)轉(zhuǎn)正的老同事乐横,他告訴你他也不懂奏司,讓你湊合著加個(gè)新接口實(shí)現(xiàn)了功能就行轩褐。加了新功能就行次哈。

你去問(wèn)干了快一年的資格更老的同事秩贰,他叮囑你千萬(wàn)別動(dòng)里面的代碼晓锻,千萬(wàn)別管里面什么樣专执,就在外面包一層奈偏,先交付新功能坞嘀,其它的有時(shí)間再說(shuō),里面的邏輯十年沒(méi)人動(dòng)過(guò)了惊来,沒(méi)有一個(gè)人能說(shuō)清楚怎么回事丽涩,你要是改,一不留神就遍地狼煙。

你怎么辦矢渊?

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

對(duì)程序員來(lái)講继准,維護(hù)老代碼是最惡心的事兒之一。沒(méi)說(shuō)的矮男,就是惡心移必,公認(rèn)的惡心,連我這種自認(rèn)為隨意毡鉴、靈活崔泵、代碼適應(yīng)性強(qiáng)、沒(méi)有原則的老程序員也覺(jué)得維護(hù)老代碼是一種罪猪瞬。如果你恨一個(gè)程序員憎瘸,就讓他去維護(hù)年久失修搖搖欲墜的老代碼吧。

然而陈瘦,本文開始時(shí)提到的情況卻幾乎是每一個(gè)程序員都會(huì)碰見的幌甘。老代碼啊,我們恨之厭之煩之遠(yuǎn)之卻不可棄之痊项。對(duì)一家軟件企業(yè)來(lái)講锅风,老代碼就是資產(chǎn),是多年積累下來(lái)的核心資產(chǎn)和重要競(jìng)爭(zhēng)力鞍泉。尤其是軟件產(chǎn)品皱埠,一份代碼先后幾波人維護(hù)過(guò)是常有的事。

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

而且,部分熟悉老代碼的老程序員也會(huì)諄諄告誡我們仗处,這幾個(gè)文件不要?jiǎng)用泄矗@幾個(gè)類不要?jiǎng)樱@里一改就奔潰婆誓,那里一改就連不上服務(wù)器吃环,雷區(qū)標(biāo)識(shí)很多。還有那一進(jìn)來(lái)就因?yàn)楸桓嬲]而根本就沒(méi)看過(guò)老代碼的程序員也會(huì)告誡我們洋幻,那代碼誰(shuí)也不懂郁轻,多少年沒(méi)人動(dòng)過(guò)了,不動(dòng)為妙,免惹麻煩……

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

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

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

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

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

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

為什么這般講绸栅?

情人還是老的好

程序員有個(gè)毛布兑啊:自己不寫文檔卻老抱怨別人的代碼沒(méi)文檔,而碰見了有文檔的代碼卻又往往棄文檔如敝履粹胯。所以蓖柔,業(yè)界流傳一句話:代碼即文檔。所以风纠,業(yè)界的代碼和文檔况鸣,少見匹配的。

哇咔咔咔竹观,對(duì)吧镐捧。

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

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

找到熟悉產(chǎn)品的前輩玩焰,讓他給你講講由驹。如果你找了產(chǎn)品經(jīng)理,他只能告訴產(chǎn)品設(shè)計(jì)上如何如何昔园。如果你找了程序員蔓榄,他通常會(huì)說(shuō)就是這樣那樣,然后說(shuō)一句高深莫測(cè)又拉仇恨的話:看看代碼就明白了默刚。

自己啃代碼甥郑,啃代碼,啃代碼荤西。

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

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

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

文檔是會(huì)過(guò)時(shí)的,代碼是不會(huì)說(shuō)謊的冠句,讀懂代碼轻掩,你就真真正正明白了業(yè)務(wù)是如何實(shí)現(xiàn)的。對(duì)于沒(méi)人敢動(dòng)而又核心的老代碼轩端,你搞明白了放典,就占領(lǐng)了戰(zhàn)略要地。

這里我要引用格力空調(diào)的一句廣告詞:掌握核心科技基茵。不管這是吹的還是怎的,話說(shuō)得不錯(cuò)壳影,掌握核心科技才有競(jìng)爭(zhēng)力拱层,對(duì)程序員來(lái)講也是一樣,唯有掌握核心業(yè)務(wù)和代碼宴咧,才能彰顯自己的價(jià)值根灯。

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

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

不能拒絕時(shí)就接納横缔,無(wú)需排斥行您,何時(shí)何地都可以修行,只要有心剪廉,處處都是成長(zhǎng)的機(jī)會(huì)娃循。最不濟(jì),也鍛煉了閱讀代碼的能力斗蒋,庖丁解牛之技成了捌斧,也可以在將來(lái)以無(wú)刃入有間,發(fā)揮用武之地泉沾。

至于怎么讀代碼改代碼捞蚂,相信比學(xué)宋仲基撩妹容易多了,一句話:多讀讀就好了跷究。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姓迅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子俊马,更是在濱河造成了極大的恐慌丁存,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,816評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柴我,死亡現(xiàn)場(chǎng)離奇詭異解寝,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)艘儒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門聋伦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)夫偶,“玉大人,你說(shuō)我怎么就攤上這事觉增”#” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵逾礁,是天一觀的道長(zhǎng)说铃。 經(jīng)常有香客問(wèn)我,道長(zhǎng)敞斋,這世上最難降的妖魔是什么截汪? 我笑而不...
    開封第一講書人閱讀 56,780評(píng)論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮植捎,結(jié)果婚禮上衙解,老公的妹妹穿的比我還像新娘。我一直安慰自己焰枢,他們只是感情好蚓峦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,890評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著济锄,像睡著了一般暑椰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荐绝,一...
    開封第一講書人閱讀 50,084評(píng)論 1 291
  • 那天一汽,我揣著相機(jī)與錄音,去河邊找鬼低滩。 笑死召夹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恕沫。 我是一名探鬼主播监憎,決...
    沈念sama閱讀 39,151評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼婶溯!你這毒婦竟也來(lái)了鲸阔?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤迄委,失蹤者是張志新(化名)和其女友劉穎褐筛,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跑筝,經(jīng)...
    沈念sama閱讀 44,355評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡死讹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,666評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了曲梗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赞警。...
    茶點(diǎn)故事閱讀 38,809評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖虏两,靈堂內(nèi)的尸體忽然破棺而出愧旦,到底是詐尸還是另有隱情,我是刑警寧澤定罢,帶...
    沈念sama閱讀 34,504評(píng)論 4 334
  • 正文 年R本政府宣布笤虫,位于F島的核電站,受9級(jí)特大地震影響祖凫,放射性物質(zhì)發(fā)生泄漏琼蚯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,150評(píng)論 3 317
  • 文/蒙蒙 一惠况、第九天 我趴在偏房一處隱蔽的房頂上張望遭庶。 院中可真熱鬧,春花似錦稠屠、人聲如沸峦睡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榨了。三九已至,卻和暖如春攘蔽,著一層夾襖步出監(jiān)牢的瞬間龙屉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工满俗, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留转捕,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,628評(píng)論 2 362
  • 正文 我出身青樓漫雷,卻偏偏與公主長(zhǎng)得像瓜富,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子降盹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,724評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 你入職一家新單位,被告知需要維護(hù)一個(gè)老產(chǎn)品涡戳,經(jīng)理找質(zhì)管給你開通了svn權(quán)限结蟋,告訴你遷出哪個(gè)分支——就是那個(gè)十年前已...
    安曉輝0閱讀 5,033評(píng)論 33 65
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,870評(píng)論 25 707
  • 2013向2014年跳轉(zhuǎn)的那一秒,我在中關(guān)村南大街上的一家肯德基里渔彰,前面站著偶遇到的學(xué)長(zhǎng)嵌屎,一分鐘前他問(wèn)我“那你跨年...
    顧一禾閱讀 286評(píng)論 0 3
  • 2017-4-24 夏日將至推正,處處散發(fā)耀眼的光。按下快門宝惰,發(fā)到群里植榕,孩子們歡呼不已。我熱情邀請(qǐng)他們五一過(guò)來(lái)作客尼夺,他...
    榕嬤嬤閱讀 651評(píng)論 0 0
  • 共享經(jīng)濟(jì)的大熱尊残,讓共享單車著實(shí)火了一把,一路融資飛奔上路淤堵,短短三年市值直逼百億寝衫,如此讓人眼饞的圈錢速度,難怪共享電...
    翟研閱讀 389評(píng)論 1 0