債務(wù)這個(gè)詞,相信大家已經(jīng)都對(duì)其深有體會(huì)了,特別是像我一樣作為“房奴”的人,每個(gè)月都要去銀行還錢,那就是債務(wù)啊。
在軟件開(kāi)發(fā)的過(guò)程中,我們往往也會(huì)借債,人們稱之為技術(shù)債務(wù),其實(shí)也就是為了快速地解決問(wèn)題,而采取的不規(guī)范的方案。比方說(shuō)把某個(gè)條件寫死,再比方說(shuō)采用一些捷徑達(dá)到目的,而這只是特殊情況,無(wú)法應(yīng)用在其他模塊中。
對(duì)于房貸,大家肯定每個(gè)月都會(huì)記著去還,但是對(duì)于技術(shù)債務(wù),大家似乎就不那么關(guān)心了,的確這個(gè)東西不一定是誰(shuí)借誰(shuí)還,可能一個(gè)人的代碼中產(chǎn)生了技術(shù)債務(wù),然后由于負(fù)擔(dān)太重,閃人了,那沒(méi)有辦法,這筆債務(wù)就會(huì)壓在后來(lái)工作接替者身上,古語(yǔ)說(shuō):父?jìng)觾敚恢肋@應(yīng)該叫什么。
然而,技術(shù)債務(wù)其實(shí)最終的承擔(dān)者還是系統(tǒng)的所有者,或者說(shuō)系統(tǒng)的開(kāi)發(fā)商。而且,技術(shù)債務(wù)有一個(gè)致命的特點(diǎn),與我們的房貸不同,而與一種很可怕的借款——我們稱之為高利貸——相同,那就是會(huì)利滾利。試想一下,如果我們?cè)谝粋€(gè)類中欠下了技術(shù)債務(wù),然后之后的程序又對(duì)這個(gè)類進(jìn)行了擴(kuò)展和修改,再后的程序?qū)U(kuò)展后的程序又做出了更大的擴(kuò)展,或者說(shuō)后來(lái)的程序在一些功能的寫法上參照了欠下債務(wù)的類,那么這個(gè)債務(wù)就會(huì)產(chǎn)生非常大的利息,甚至于超過(guò)了債務(wù)本身。用不了太多時(shí)間,我們就會(huì)發(fā)現(xiàn),已經(jīng)無(wú)力償還這份技術(shù)債務(wù)了。
上面所提到的還只是在功能上的技術(shù)債務(wù),我覺(jué)得技術(shù)債務(wù)遍布于我們的系統(tǒng)開(kāi)發(fā)過(guò)程之中。比方說(shuō):
在代碼規(guī)范上也存在技術(shù)債務(wù),如果一個(gè)程序員為了快速開(kāi)發(fā)或者修改一個(gè)功能,在開(kāi)發(fā)的時(shí)候沒(méi)有遵守代碼規(guī)范,那么此時(shí)就會(huì)欠下代碼規(guī)范方面的債務(wù)。如果不盡快償還的話,那么之后的基于該程序的修改,也會(huì)有很大的可能不遵守代碼規(guī)范,這也正是破窗子理論的體現(xiàn)。這樣下去,程序的可維護(hù)性就會(huì)大大降低,直至不可維護(hù)。
在文檔上也存在技術(shù)債務(wù)。現(xiàn)在很多的開(kāi)發(fā)團(tuán)隊(duì)中還是存在技術(shù)文檔的,像詳細(xì)設(shè)計(jì)什么的。如果一次開(kāi)發(fā)中,由于時(shí)間緊,只修改了代碼,而沒(méi)有修改相關(guān)的文檔,那么必定就會(huì)造成文檔和實(shí)際代碼功能上的不一致。這樣做的后果就是,在一段時(shí)間之后,我們會(huì)發(fā)現(xiàn)文檔根本就不足以作為參考,因?yàn)橛行r(shí)候不僅不會(huì)幫助我們,而且還會(huì)造成誤導(dǎo),從而大家對(duì)文檔都失去了信心。
從上面的種種我們可以看出,欠下技術(shù)債務(wù),而疏于修改,后果會(huì)非常嚴(yán)重,那么我們應(yīng)該怎么做呢?其實(shí)道理很簡(jiǎn)單,首先是盡量不要欠下技術(shù)債務(wù),其次就是一旦迫不得已欠下了債務(wù),就應(yīng)該以最快的速度償還。我們?cè)阢y行借的房貸,5年還和20年還,利息會(huì)相差很多,對(duì)于技術(shù)債務(wù),也是同樣,如果盡快償還,那么不會(huì)付出太大的代價(jià),而且是在我們的能力承受范圍之內(nèi)的,但是如果拖的時(shí)間太長(zhǎng),債務(wù)就會(huì)變得越來(lái)越多,直至我們無(wú)力償還。
所以,作為程序員,除了關(guān)心自己生活中的債務(wù)之外,也請(qǐng)對(duì)技術(shù)債務(wù)提高警惕!
-
工程師
+關(guān)注
關(guān)注
59文章
1603瀏覽量
71034 -
程序員
+關(guān)注
關(guān)注
4文章
956瀏覽量
30942
發(fā)布評(píng)論請(qǐng)先 登錄
零代碼軟件開(kāi)發(fā)平臺(tái)ATECLOUD如何實(shí)現(xiàn)儀器程控軟件開(kāi)發(fā)?
什么是BSP工程師
嵌入式軟件開(kāi)發(fā)的 10 個(gè)技巧分享
工程師變身AI“指揮者”,吉利與阿里云的軟件開(kāi)發(fā)變革實(shí)驗(yàn)
想成為硬件工程師?我教你啊!你得先學(xué)會(huì)這些...... #硬件工程師 #電子工程師 #電子愛(ài)好者 #電子行業(yè)
招鑲?cè)胧?b class='flag-5'>工程師1個(gè),硬件工程師一個(gè),
電子發(fā)燒友工程師看!電子領(lǐng)域評(píng)職稱,技術(shù)之路更扎實(shí)
知識(shí)分享 | 敏捷方法在基于模型的軟件開(kāi)發(fā)項(xiàng)目中的應(yīng)用
基于瑞薩64位MPU RZ/G2L進(jìn)行32位應(yīng)用軟件開(kāi)發(fā)
硬件工程師看了只會(huì)找個(gè)角落默默哭泣#硬件工程師 #MDD #MDD辰達(dá)半導(dǎo)體 #產(chǎn)品經(jīng)理 #軟件工程師
【華秋DFM】V4.6正式上線:工程師的PCB設(shè)計(jì)“好搭子”來(lái)了!
如何成為一名合格的KaihongOS北向應(yīng)用開(kāi)發(fā)工程師
硬件工程師手冊(cè)(全套)
如何成為一名嵌入式軟件工程師?
一位軟件開(kāi)發(fā)工程師面對(duì)生活壓力的自述
評(píng)論