跳到主要内容
Huan Du

huandu.me

3 分钟阅读

每日自问自答:如何做到写大量代码的同时很少犯错?

从实习时严格的代码评审与缺陷密度统计说起:TDD、lint 零告警、反复自审、把自己练成测试专家,都是长期训练的产物。

  • #daily-qna
  • #engineering
  • #code-quality
  • #testing

写代码少出错、乃至不出错,这是一种长期训练的结果,追求的是一遍写出高质量的代码,就像书法家练字一样,需要长期的积累。

这种训练我是从大学开始的。当时正在某通信公司实习,那里的代码评审非常严格,有很详细的缺陷密度统计,会在公司内横向评比,这给我提供了直观的数据反馈。

为了做到少犯错,我主要会做以下几点。

  1. 测试驱动开发。

当年流行测试驱动开发(TDD)的理念,我会在写代码前就考虑到相关测试用例,然后针对性的写代码,并在脑中一遍遍走读代码跑测试用例。

相比需求驱动开发,TDD 能够迫使自己提升代码的模块化水平,从而为后续的工作打下良好基础。

  1. Lint 无告警。

得益于实习的那家公司对 Lint 的超高要求,我一直要求自己 lint 零告警,有意识训练自己每一行代码都直接符合 lint 规范。其实只要习惯了写出规范的代码就不会对自己有任何的思维负担,当然刚开始的时候还是会比较痛苦的。

  1. 反复自我代码审查。

就算 lint 通过也不代表代码中完美无瑕,我还会不断的自审写过的代码。这种自审不限于变更的代码,而是隔一段时间就会看完所有代码,在时间允许和风险可控的情况下,主动修正潜在问题。这种自我审查其实很需要勇气来落实各种修改,我会尽可能的写测试用例覆盖代码,或者多做各种测试和更多的代码自审来保证质量。

  1. 成为测试专家。

能被用户发现的问题才是真的问题,未被发现的只是未完成的功能,只要下次做完就毫无问题。

要想做到比其他人更早的发现所有问题,那就需要自己成为一个测试专家,熟知测试方案设计、用例编写、工具使用等。如何做到呢?自己去创业并且培养几个合格的测试工程师就懂了,当然过程中少不了跟有经验的测试进行交流。

  1. 对代码充满求知欲。

代码是最“无趣”的东西,它没有任何的随机性,一切问题都有合理的解释,一切出问题的诱因都有其深刻的原理,那么只要充分理解自己写的代码所涉及到的其他依赖代码,出错的可能性就会小很多。有空的话要尝试去读所有与自己代码相关的周边代码、底层库代码,这会对提升质量有很明显的帮助。


最后还是要强调一下,这种训练是需要非常长时间的沉淀,一开始一定会影响自己的开发效率,只有形成肌肉记忆之后才能让自己写代码的速度恢复到正常速度。

评论

  1. 正在加载评论…

发表评论

只支持纯文本:内容会原样显示,不会解析 HTML、Markdown 或链接。