不论是什么行业里,能让人最兴奋的事情通常都是解决新奇的、高难度问题带来的刺激。在我的工作中,经常会遇到很多bug,乍一看,它们都是不可能的。不是不可能解决,而是完全不可能出现。就好象最前沿的科技揭示了一个新的奇怪的逻辑现象,以至于人的大脑完全无法理解。
当然,这里我总结的这些bug都是很独特的,如果你想说是否能有某种最先进的系统性的方法能将这些bug归类,统一解决,那是愚蠢的,就好象一个人无法认识到自己在犯错而避免过错一样。不管怎样,下面的这些debug原则对我是十分有效的,而且我相信,对大多数程序员也都是有效的。
- 你改错了文件
- 你改对了文件,但却是在别人的机器上
- 你改对了文件,但忘了保存
- 你该对了文件,但忘了重新编译
- 你认为你把那个东西开启了,但实际上你把它关闭了
- 你认为你把那个东西关闭了,但实际上你把它开启了
- 会议中,你应该用心听。
- 你运行了错误的版本
- 你运行了正确的版本,但却是在别人的机器上
- 你改正了问题,但忘了提交
- 你改正了问题,也提交了,但忘了push到版本库中
- 你改正了问题,也提交了,也push了。然而,很多用户的工作都依赖于之前有问题的版本,于是你必须回滚。
我非常虔诚的向大家奉送这些debug原则,任何一次debug都不可能只使用其中的一个方法解决。我真挚的希望大家通过对这些debug原则的思考能获得意想不到的收获。