少即是多。这是一句老生常谈的话了,但很多时候它确实是真理。
过去几周里,我对我们代码库的一项改进就是删除了它的一大块。
我们以敏捷思想来写软件,包括YAGNI(就是You Aren’t Gonna Need It你不会需要它)。人性使然,我们必然会在一些地方留下短板。
我注意到产品在执行某些任务时话了太长时间——应该是即时的简单任务。这是由于它们被过度实施了;被额外装饰得花里胡哨,但在当时看来确实个好点子。
因此我简化了代码,提高了产品性能,通过删除代码库里那些多余的功能,降低了全局代码的熵级别。好处是,我的单元测试告诉我,在操作期间并没有破坏任何事。
一个简单而令人满意的体验。
那么,为什么不必要的代码会出现在最开始的地方?为什么一个程序员会觉得需要写下额外的代码,它又是如何通过评审和配对过程的?几乎可以肯定来自以下几点:
- 这是一个有趣的额外的东西,程序员想要写(建议:写代码是为了提升其价值,而不是取悦你自己)。
- 一些人认为它可能在未来有用,所以感觉它现在就该码出来(建议:这不是YAGNI。如果现在不需要,就不要现在写)。
- 这个“扩展”看起来并不大,相对于站在客户角度思考是否真的有用,直接实现会更简单(建议:额外的代码总会花掉更长的时间来编写和实现。客户真的很和蔼😏。一个小小的扩展代码雪球,时间久了也会滚成庞大的维护工作量)。
- 程序员自行炮制出额外的需求,既没有文档也没有论证过这些额外功能。这些需求实际上是假的。(建议:程序员不要设置系统需求,让客户来做)。
你此刻正在做什么?这一切都需要吗?