高效程序员的途径2:软件的熵(shang),得治!

<熵>是一个来自物理学的概念,指的是某个系统中的“无序”的总量。热力学定律保证了宇宙中的熵倾向于最大化。尽管软件开发几乎不受任何物理定律的约束,但是熵(entropy)对我们的影响却很大。

这些年的工作中,绝大部分都是软件后期维护的工作。这过程中随着时间的推移发现维护的难度越来越大,在创造软件之初,高维护性、高扩展性等等美好的设想都在我们的设想之内,怎么就会造成这样局面呢?
原因之一就是我们被迫放了许多无序的代码在软件中,导致亲手打造的软件慢慢的变的失控。

01.软件腐烂

什么意思呢。根据熵这个定律,一个系统中无序的东西会产生更多的无序,如果放任这种现象按照自然规律发展的话,无序就会变的无限多。比如在软件开发中的无序增长时,我们称之为“软件腐烂”。

引起的软件腐烂的原因有很多,个人认为最主要的个人编码习惯和项目文化。也就是说即使项目中只有你自己一个人,尽管在项目初期你的设想很合理。但是在项目进行的过程中由于时间、个人习惯、技术水平等等原因,出现了“无序”的代码。然后随之而来的极有可能是维护困难、问题阶段性暴露甚至是软件的失败。

2.破窗户效应

原书中讲了下面一个经典的例子:

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

“破窗户”放在软件中是什么,劣质的设计、错误的决定或者是糟糕的代码。不要留着这些在你的项目中,实在没时间修改这些问题的时候,那就先把窗户钉上木板(打个补丁或者贴个标签)。放在你脑子里最显眼的地方,等你有空的时候,换上新玻璃。

如果你认为无法清除项目所有的破窗户,那就继续你现在做的事情,天天去清理垃圾(修改BUG)直到忍不住换个没有破窗户的住处吧(系统移行)。

3.保持代码的优雅

为了与“破窗户”对照,再引用原书中的一个似乎很极端的例子:

有一位让人讨厌的的富翁,拥有一所完美的、漂亮的房子。里面满是无价的古董、艺术品、以及各种诸如此类的东西。有一天他的房子终于着火了。消防人员拖着粗大、脏兮兮的水管到门口时,一愣,然后在门口到着火点之间铺上了垫子。

因为他们不想弄脏屋子里的地毯。

一段设计低劣的代码的代价是成员可能需要在整个项目忍受它带来的糟糕的管理决定。

我们在维护项目的时候经常会听到这样的声音“原版的代码就是这样写的”,“我这么写也完成能实现功能啊”或者“反正原来的代码写的就像垃圾一样,没必要去美化”甚至在发现漏洞时候我们会说,项目都这么长时间也没啥问题,就这样吧。

看似“稳妥”的对待,有可能就是那棵稻草。

相反,如果项目的代码整体都很漂亮。即使临近交付期限、工数不足、临时接盘等等状况,我敢肯定破坏原有优雅的代码需要下很大的决心。

在我家的卧室里有一个单人沙发放在靠窗户的位置,原本是想没事的时候坐在那里读读书,用按摩椅按按摩什么的。可是逐渐成为了脏衣服收纳处,最后这个沙发上简直是什么都有,而且杂乱无章。有时候我也想这样不好,看着实在是太乱了。但是由于把脏衣服什么的顺手扔在那实在是太方便了,所以一直没得到改善,导致每次打扫卫生需要花很长时间在这个沙发身上。

没办法了!就每天都会收拾几次这个沙发来保持整洁。这样持续了一个星期之后,沙发上居然不再有乱七八糟的东西了,即使偶尔零星有几件也会摆放的很整齐。

你我皆凡人,不能做到出淤泥而不染,但并不妨碍我们做的更好一些。

完全避免软件的“变坏”也许不会实现,但是放缓变质的速度是肯定能做到的。

挑战:

  • 找破窗户
  • 跟团队一起找一两个“破窗户”,并且商讨解决方案。然后再想想你有足够的理由去“治疗”了吗?

进阶全集请查看

猜你喜欢

转载自blog.csdn.net/weixin_38354108/article/details/107588664
今日推荐