给大家推荐一本书《程序员修炼之道--从小工到专家》,对书中提到的软件熵、破窗户理论感触还是比较深的,本文给大家分享下软件熵、破窗户理论是什么?
软件熵
![4062064e533b5986ed19dcb4ab4e8a06.png](https://i-blog.csdnimg.cn/blog_migrate/b1802e95681d9636ae6c057dc436ca57.jpeg)
熵,热力学中表征物质状态的参量之一,其物理意义是体系混乱程度的度量。
1948年,香农Claude E. Shannon引入信息(熵),将其定义为离散随机事件的出现概率。一个系统越是有序,信息熵就越低;反之,一个系统越是混乱,信息熵就越高。所以说,信息熵可以被认为是系统有序化程度的一个度量。机器学习中的决策树也有使用到信息熵。
熵就是指事物的混乱程度,对任何事物都是同理的,如果没有外力的作用,都会变的混乱,熵越来越大。比如,如果房间无人打扫,不可能越来越干净(有序化),只可能越来越乱(无序化)。
软件系统同样遵循该规则,系统随着需求的增多,会变的越来越复杂越混乱,软件熵就会增大,而我们进行系统重构,架构设计就是降低软件的熵,解决软件系统的复杂度。这里也验证了架构设计就是为了解决系统复杂度的,如果一个系统很简单,那么不用架构设计也可以做好。
破窗户理论
![488aab490ef3cccb290a8a421bf55395.png](https://i-blog.csdnimg.cn/blog_migrate/a08b29641502c0dfa1c59d50b096fa9a.jpeg)
这个理论最初来源是一个实验:一辆废弃的车放了一个星期,无人理睬。而一旦有一扇窗户被打破,数小时之内车上的设备就被抢夺一空,车也会破坏的越来越严重。生活中也有这样的现象:一个好的地方如果有人扔了垃圾,大家就都会向那里扔垃圾,慢慢就会越来越脏,没人愿意来了。
软件也是这样的,本来对自己要求还是很高的,看到系统中有“破窗户”(低劣的设计、糟糕的代码)的代码,自己也会跟着那样写,这样的“破窗户”代码就会越来越多,最终导致整个系统无法维护。现实中往往一些优良设计的系统,如果出现了一次“破窗户”,不进行修复。那么整个系统就会迅速的恶化。
总结
所以,我们应该有软件熵的意识,做好架构设计降低软件熵,同时不要容忍破窗户,遇到破窗户的时候,要进行修复,防止越来越破。就算没有足够的时间进行修理,也要把有问题的代码注释起来,让大家知道,等到有时间的时候进行修复,一定要进行修复,不然长期以往,系统就会变得难以维护。
希望对大家有所帮助,有帮助记得点赞哦!可以关注下,后面持续分享技术文章,谢谢!