發(fā)布于:2021-01-27 10:58:27
1
603
0
最近,人們一直在談論編寫干凈的代碼是否真的可以省錢,還是更多關于藝術,即使事情變得漂亮。
好吧,正如森林阿甘(Forest Gump)所說,“也許兩者都有。”
怎么可能兩者都有呢?
我認為總體來說,編寫干凈的代碼可以為您節(jié)省構建軟件的資金(除非您花在維護軟件上的時間很少或根本不存在)。
它省錢的原因是兩者都起作用的地方。
如果我們僅僅從編寫干凈代碼的實踐中提取出金錢的部分,我們就可以得出一個非??煽康恼擖c,即通過查看在軟件開發(fā)中花費的時間和金錢最多的是什么,總體上它節(jié)省了金錢。
猜猜看。你覺得是什么?
沒錯。修復生產(chǎn)缺陷。編寫單元測試可能需要一段時間。重構代碼以使其“干凈”可能需要一段時間。但是,如果在3小時的編碼任務上花費額外的3小時,最終只為您節(jié)省了1個生產(chǎn)問題,那么您就把時間花回去了,然后又節(jié)省了一些時間。
從項目經(jīng)理到QA,再到程序員,再到QA,再到部署,一個生產(chǎn)問題的實際時間開銷,很容易每一個問題花費10個或更多小時。
很難反駁這種邏輯本身,但這里還有另一個因素在起作用。那就是人的因素。
你看,這不全是關于金錢和金錢,也不全是關于當你把人類投入其中時,什么是合乎邏輯或?qū)嶋H的,我相信,如果非人類的利益寫干凈的代碼沒有為你節(jié)省任何金錢,總的來說,它仍然會為你節(jié)省金錢。
沒人會以廢話為傲
我不在乎這個軟件是否能工作,也不在乎它看起來是否漂亮,維護代碼的人會對它有不同的看法。
如果內(nèi)部代碼是垃圾,如果沒有什么好感覺,如果它是一大堆意大利面代碼,它將嚴重降低開發(fā)人員的積極性。
缺乏動力的開發(fā)人員會做什么?
各種可怕的事情。他們尋找新的工作。他們寫更多的垃圾代碼。他們浪費時間和拖延時間。他們做他們必須做的事情,直到他們能擺脫這個愚蠢的職業(yè),或者夢想的工作出現(xiàn)在他們能寫的地方ASP.NET使用自動模擬容器和BDD的MVC代碼。
有時你不得不問自己,維護現(xiàn)有的VB6應用程序是否真的比將其轉換為C#要困難得多?好像不應該,對吧?當然,維護一個構建良好的C應用程序更容易,但是為什么這些應用程序最終會被重寫有一個令人信服的原因,即使它們確實不需要重寫。
開發(fā)舊的硬性應用程序的開發(fā)人員并沒有動力這樣做。開發(fā)人員喜歡新的閃亮技術。他們喜歡感覺自己正在學習和擴展技能,而不僅僅是維持現(xiàn)狀。
因此,即使重寫VB6應用程序沒有實際意義…即使你的度量和圖表告訴你不應該這樣做…當你重寫應用程序時,你會發(fā)現(xiàn)這種神奇的隱藏成本節(jié)約,因為突然間,開發(fā)人員就不會拖著腳去修復一個bug,或者給“那個蹩腳的老VB6應用程序”添加一個功能了。對客戶來說,這個應用程序甚至可能看起來一模一樣,但對開發(fā)人員來說,它將是一個全新的閃亮玩具。
編寫干凈的代碼不僅僅是為了省錢
所以你看,在理論上,有一個關于重構代碼實際上是一個正的投資回報還是負的爭論。我每次都會在純實用和圖表理論上為正的,但是當你加入人類藝術元素時,這是沒有爭議的。
如果您的代碼庫是您的開發(fā)人員引以為豪的東西,那么您將看到時間上的巨大節(jié)省,因為您的開發(fā)人員將被極大地激勵著使它變得更好。
干凈的代碼產(chǎn)生干凈的代碼。
因此,當我說這兩者時,我不僅對這個話題不置可否或不熱心。人為因素使得干凈的代碼對于節(jié)省金錢至關重要。