美国政治学家James Q. Wilson和犯罪学家George Kelling,提出了一个“破窗理论”:如果有人打坏了一栋建筑上的一块玻璃,又没有及时修复,别人就可能受到某些暗示性的纵容,去打碎更多的玻璃。两人还有一部关于破窗理论的书:Fixing broken windows: Restoring order and reducing crime in our communities

软件开发中的破窗也很常见:

  1. 使用某些公司所谓的开源代码构建自己的业务核心模块:并非反对使用,而是要谨慎。糟糕的代码和设计可能也会有商业上的成功,但更多的时候,只会带来更多的维护成本;
  2. 购买一些来路不明的代码:这种代码价格非常便宜,有的甚至只需要数百元,但是缺少售后,通常附带上百倍的修改、维护代价;
  3. 代码质量每况愈下:在人员频繁更换的项目中很常见,开发者之间技能、习惯的差异,通常会认为别人的代码不合理,在修改的过程中也逐渐变得随意。
  4. …..

如何预防软件开发中的破窗:

  1. 保持追求完美的态度。开发中无论是对编程规范、性能、扩展性都有执着的追求,甚至不要放过编译的警告。
  2. 对现有系统进行持续的重构和改进。
  3. 对于核心业务,该重复造轮子的时候要果断抛弃现有轮子。

参考:

  1. Broken windows theory and programming http://www.johndcook.com/blog/2008/12/31/broken-windows-theory-and-programming/
  2. 与破窗做斗争: http://woodstudio.javaeye.com/blog/409639