為什么代碼越寫越復雜


代碼復雜程度可以用“熵”來表示,“熵”是物理學中的概念, 表示所有“無序”的總和, 盡管軟件開發不受任何物理定律的約束,然而熵對軟件開發的影響非常之大, 當代碼中的無序增長到一定程度時,代碼復雜到了程序員難以掌控, 軟件就“腐爛”了。

追本溯源,導致軟件腐爛的原因其實並不復雜, 跟我們現實世界中的方方面面有着密切的關系。

隨便拿一則經常被報道的新聞事件來說

國外某處著名旅游景點的牆壁上被中國游客刻滿了“ xxx到此一游”, 國外媒體表示從中國旅客的這種行為上可判斷出中國人民的素質普遍低下; 國內人民表示要聲討這群破壞國外景點,另國人蒙羞的游客,讓他們滾出中國人的行列。

為什么好好的一堵牆上會被刻滿了字? 為什么這群人不去別的地方刻非看准一個地方刻? 其實道理很簡單, 當這堵牆上有一個人刻過了字,那么第二個人便會認為:“別人可以刻, 那么我也可以刻”, 然后第三第四第五和后面所有的人都會這么想, 字越刻越多, 牆也越來越破壞的嚴重, 畢竟人都有喜歡留紀念的天性。 然而, 假如是一面干凈沒有一絲被損壞的痕跡的牆,我想會敢冒天下之大不韙去上面搞破壞的人肯定不多, 因此,牆會一直保持着原樣; 但如果先例一開,之后的場面往往是一發不可收拾。 就像我們過馬路, 本來大家等紅燈等的好好的, 某一個人按捺不住闖了紅燈, 接下來仿佛有一股無形的力量牽引着大家一起去闖紅燈, 這可能就是所謂的烏合之眾吧。

回到軟件開發的話題,軟件會腐爛其實也是同樣的道理。 剛才開始的時候, 代碼寫的井井有條, 然而, 某一個時刻為了實現一個特殊的需求,一時犯懶圖方便, 沒有按照原來的方式繼續保持代碼的井然有序, 讓軟件的熵值增加了那么一點點。 當時這么做的程序員可能認為:“就弄臟了這么一小塊地方, 沒什么大影響的”, 但是隨着軟件功能的演進, 問題會日益嚴重。 當下次再碰到類似於這種與原來代碼構造格格不入的特殊問題, 肯定會再次為了方便而抵擋不住誘惑繼續犯錯, 腦子里肯定會蹦出這樣的想法:“反正代碼已經臟了, 再臟一點點又有何妨”,這和在景點刻字的游客的想法何其相似。 毫無疑問, 軟件開發中特殊的需求實現永遠不可能避免,然后接下來肯定是一而再再而三的縱容自己繼續“把代碼弄臟”, 就算是換個程序員來開發還是一樣, 最多只是抱怨下:“哪個SB程序員怎么寫出了這么爛的代碼”,然后就是:“既然那個SB這么干了, 那我也這么干, 反正已經理不清了”。 所謂的軟件腐爛就是這么形成的。

因此, 要避免軟件腐爛, 就一定要把軟件熵值降到最低。 因為一時偷懶圖方便增加代碼無序性,哪怕只是一點點,這個頭不能開, 不然會讓整個軟件走向無法回頭的深淵。當看到軟件中某處有那么一點“臟”的時候,一定要盡心盡力的把它清理干凈,否則這個污點會越來越大, 並且向其它地區擴散, 最后整個軟件中所有地方都臭不可聞, 捏着鼻子寫代碼的這種感覺真的很不好。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM