軟體熵(Software entropy)
- 2019 年 11 月 3 日
- 筆記
版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
本文鏈接:https://blog.csdn.net/pyycsd/article/details/102803258
軟體熵(Software entropy)是指軟體的無序程度。軟體熵可用來說明軟體在經過不斷修改後,無序程度提高的現象
儘管軟體開發幾乎不受任何物理定律的約束,熵(entropy)對我們的影響卻很大。熵是一個來自物理學的概念,指的是某個系統中的 「無序」 的總量,遺憾的是,熱力學定律保證了宇宙中的熵傾向於最大化,當軟體中的無序增長時,程式設計師們稱之為 「軟體腐爛(software rot)」
很多元素可以崔進軟體腐爛,其中最重要的一個似乎是開發項目時的心理(或文化),即使你的團隊只有你一個人,你開發項目時的心理也可能是非常微妙的事情。儘管制定了最好的計劃,擁有最好的開發者,項目在其生命周期中仍可能遭遇毀滅和衰敗,而另一些項目,儘管遇到巨大的困難和接連而來的挫折,卻成功的擊敗自然的無序傾向,設法取得相當好的結果。
是什麼造成了這樣的差異?
在市區,有些建築漂亮而整潔,而另一些卻是破敗不堪的 「廢棄船隻」,為什麼?犯罪和城市的衰敗,領域的研究者發現一種迷人的觸發機制,一種能夠很快將整潔、完整和有人居住的建築變成破敗廢棄物的機制:破窗戶
一扇破窗戶,只要有那麼一段時間不修理,就會漸漸給建築的居民帶來一種廢棄感 —一種職權部門不關心這座建築的感覺。於是又一扇窗戶破了,人們開始亂扔垃圾,出現了亂塗亂畫。嚴重的結構損壞開始了,在相對較短的一段時間裡,建築就被損毀的超出業主願意修理的程度,而廢棄感變成了現實。
「破窗戶理論」 啟發了紐約和其他大城市的警察部門,他們對一些輕微的案例嚴加處理,以防止大案的發生。這起了作用:管束破窗戶、亂塗亂畫和其他輕微的違法事件減少了嚴重罪案的發生。
Don't live with Broken Windows 不要容忍破窗戶
不要留著 「破窗戶」(低劣的設計,錯誤的決策或是糟糕的程式碼)不修。發現一個就修一個,如果沒有足夠的時間進行適當的修理,就用木板把它釘起來。或許你可以把問題的程式碼加入注釋(comment out),或是顯示** 「未實現」** 消息,或是用虛設的數據(dummy data)加以替代。採取某種行動防止進一步損壞,並說明情勢處在你的控制之下。
我們看過整潔、運行良好的系統,一旦窗戶開始破裂,就相當於迅速地惡化,還有其他一些因素能夠促生軟體腐爛,但與其他任何因素相比,置之不理都會更快地加速腐爛的進程。
你也許在想,沒有人有時間到處清理項目中的所有破玻璃。如果你繼續這麼想,你就最好計劃找一個大型垃圾罐,或者搬到別處去。不要讓熵贏得勝利。
滅火
作為參照,讓我們講述Andy的一個熟人的故事。他是一個富的讓人討厭的富翁,擁有一所完美、漂亮的房子,裡面滿是無價的古董,藝術品,以及諸如此類的東西。有一天,一幅掛毯離他的卧室壁爐太近了一點,著了火。消防員衝進來救火 — 和他的房子,但他們拖著粗大、骯髒的消防水管衝進房間門口卻停住了 — 火在咆哮 — 他們要在前門和著火之間鋪上墊子,他們不想弄髒地毯,這的確是一個極端的例子,但我們必須以這樣的方式對待軟體,一扇破窗戶、一段設計低劣的程式碼、團隊必須在整個項目開發過程中加以忍受一項糟糕的管理決策 – 就足以是項目開開始衰敗。如果你發現自己在有好些破窗戶的項目里工作,會很容易產生這樣的想法:「這些程式碼的其餘部分也是垃圾,我只要照著做就行了」。項目在這之前是否一直很好、並沒有什麼關係:在最初得出 「破窗戶理論」 的一項實驗中,一輛廢棄的汽車放了一個星期,無人理睬,而一旦有一扇窗戶被打破,數小時之內車上的設備就被搶奪一空,車也被翻了個底朝天。
按照同樣的道理,如果你發現你所在的團隊和項目的程式碼是否漂亮:編寫整潔、設計良好,並且很優雅,你就很可能會格外注意不去把它弄髒,就和那些消防員一樣,即使火在咆哮(最後預期、發布時間、會展演示等等),你也不會想成為第一個弄髒東西的人。
挑戰
- 通過調查你周邊的計算 「環境」,幫助增強你的團隊能力,選擇兩或三扇 「破窗戶」,並與你同事討論問題何在,以及怎樣修理它們。
- 你能否說出某扇窗戶何時破的?你的反應是什麼?如果它人的決策所致,或者是管理部門的指示,你能做些什麼?