软件熵(Software entropy)

2019-10-17  本文已影响0人  匆匆岁月

软件熵Software entropy)是指软件的无序程度。软件熵可用来说明软件在经过不断修改后,无序程度提高的现象。

尽管软件开发几乎不受任何物理定律的约束,熵(entropy)对我们的影响却很大。熵是一个来自物理学的概念,指的是某个系统中的 “无序” 的总量,遗憾的是,热力学定律保证了宇宙中的熵倾向于最大化,当软件中的无序增长时,程序员们称之为 “软件腐烂(software rot)”

很多元素可以崔进软件腐烂,其中最重要的一个似乎是开发项目时的心理(或文化),即使你的团队只有你一个人,你开发项目时的心理也可能是非常微妙的事情。尽管制定了最好的计划,拥有最好的开发者,项目在其生命周期中仍可能遭遇毁灭和衰败,而另一些项目,尽管遇到巨大的困难和接连而来的挫折,却成功的击败自然的无序倾向,设法取得相当好的结果。

是什么造成了这样的差异?

在市区,有些建筑漂亮而整洁,而另一些却是破败不堪的 “废弃船只”,为什么?犯罪和城市的衰败,领域的研究者发现一种迷人的触发机制,一种能够很快将整洁、完整和有人居住的建筑变成破败废弃物的机制:破窗户

一扇破窗户,只要有那么一段时间不修理,就会渐渐给建筑的居民带来一种废弃感 ---一种职权部门不关心这座建筑的感觉。于是又一扇窗户破了,人们开始乱扔垃圾,出现了乱涂乱画。严重的结构损坏开始了,在相对较短的一段时间里,建筑就被损毁的超出业主愿意修理的程度,而废弃感变成了现实。

“破窗户理论” 启发了纽约和其他大城市的警察部门,他们对一些轻微的案例严加处理,以防止大案的发生。这起了作用:管束破窗户、乱涂乱画和其他轻微的违法事件减少了严重罪案的发生。

Don't live with Broken Windows
不要容忍破窗户

不要留着 “破窗户”(低劣的设计,错误的决策或是糟糕的代码)不修。发现一个就修一个,如果没有足够的时间进行适当的修理,就用木板把它钉起来。或许你可以把问题的代码加入注释(comment out),或是显示** “未实现”** 消息,或是用虚设的数据(dummy data)加以替代。采取某种行动防止进一步损坏,并说明情势处在你的控制之下。

我们看过整洁、运行良好的系统,一旦窗户开始破裂,就相当于迅速地恶化,还有其他一些因素能够促生软件腐烂,但与其他任何因素相比,置之不理都会更快地加速腐烂的进程。

你也许在想,没有人有时间到处清理项目中的所有破玻璃。如果你继续这么想,你就最好计划找一个大型垃圾罐,或者搬到别处去。不要让熵赢得胜利。

灭火

作为参照,让我们讲述Andy的一个熟人的故事。他是一个富的让人讨厌的富翁,拥有一所完美、漂亮的房子,里面满是无价的古董,艺术品,以及诸如此类的东西。有一天,一幅挂毯离他的卧室壁炉太近了一点,着了火。消防员冲进来救火 -- 和他的房子,但他们拖着粗大、肮脏的消防水管冲进房间门口却停住了 -- 火在咆哮 -- 他们要在前门和着火之间铺上垫子,他们不想弄脏地毯,这的确是一个极端的例子,但我们必须以这样的方式对待软件,一扇破窗户、一段设计低劣的代码、团队必须在整个项目开发过程中加以忍受一项糟糕的管理决策 - 就足以是项目开开始衰败。如果你发现自己在有好些破窗户的项目里工作,会很容易产生这样的想法:“这些代码的其余部分也是垃圾,我只要照着做就行了”。项目在这之前是否一直很好、并没有什么关系:在最初得出 “破窗户理论” 的一项实验中,一辆废弃的汽车放了一个星期,无人理睬,而一旦有一扇窗户被打破,数小时之内车上的设备就被抢夺一空,车也被翻了个底朝天。

按照同样的道理,如果你发现你所在的团队和项目的代码是否漂亮:编写整洁、设计良好,并且很优雅,你就很可能会格外注意不去把它弄脏,就和那些消防员一样,即使火在咆哮(最后预期、发布时间、会展演示等等),你也不会想成为第一个弄脏东西的人。

挑战

上一篇下一篇

猜你喜欢

热点阅读