首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >软件熵(Software entropy)

软件熵(Software entropy)

作者头像
用户1212940
发布2019-11-03 12:12:54
1K0
发布2019-11-03 12:12:54
举报
文章被收录于专栏:LambdaLambda

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

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

挑战

  • 通过调查你周边的计算 “环境”,帮助增强你的团队能力,选择两或三扇 “破窗户”,并与你同事讨论问题何在,以及怎样修理它们。
  • 你能否说出某扇窗户何时破的?你的反应是什么?如果它人的决策所致,或者是管理部门的指示,你能做些什么?
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 灭火
  • 挑战
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档