Random Tech Thoughts

The title above is not random

汽车为什么要有刹车

Why do cars have brakes? 这篇文章不错,继续往下读之前可以先想一想这个问题。

没有刹车,意味着不能很快减速,出于安全考虑不得把车开慢些。刹车给了我们减速的能力,因此让我们能够驾驶的更快。

原文作者将此类比到软件开发中,如果将软件构建的过程类比为开车,那测试就好比是刹车。

  • 如果有好的自动化测试,我们可以比较放心地去修改代码,尽早发现 bug,停下 coding 修复 bug
  • 没有测试则要么写代码的时候总是很小心,每次 commit 之前检查很多遍;要么依然全速前进,偶尔发现一堆 bug 之后花更多的时间 fix
    • 我现在的习惯是每次 commit 代码之前先在 Source Tree 中检查几遍,但改动一多依然难免引入 bug

最近优化 COW 性能的过程中对此非常有同感。之前写 COW 的时候偷懒,没有写很多测试。最近做性能优化的过程中引入过一些 bug,没有测试代码即使 fix 了也不是非常放心。几次之后索性修改哪部分代码就先把测试补上。虽然写测试需要花额外的时间和精力,但有测试之后可以放心修改代码、尽早发现 bug,总的来说应该反而节省更多的时间。

这次我才是切身体会到测试对于重构以及优化代码的重要性。

最后,顺带宣布一下 COW 0.6 版发布。主要变化:

  • 允许用户指定 PAC URL,方便通过端口映射将 COW 提供到外网
  • 性能优化
  • 对 HTTP client/server 更加宽容,参考 RFC2616 19.3
  • 一些 bug fix

感谢 go test 以及 Travis CI 在测试上提供的帮助。

Comments