再读《程序员修炼之道-从小工到专家》
2024-9-7 08:0:0 Author: jiajunhuang.com(查看原文) 阅读量:7 收藏

我单独拎出几个觉得很重要的点,作为笔记。

测试

Test Early. Test Ofen. Test Automatically.

软件质量保证是一个非常重要的事情,其中测试就是主要手段。测试包括手动测试和自动化测试。

手动测试,是指人工操作软件,检查软件的功能是否正常。这种测试效率低,容易出错,可控性相对较低。但是很多场景还是 非常有必要的,比如变动非常快的UI界面,或者一些复杂的交互逻辑。这种场景使用自动化测试,那么测试覆盖和维护的成本 都会非常高。

自动化测试,就是机器来跑,现在的工作中,主要在这么几个场景下,配合CI/CD使用:

  • 代码提交时,PR中跑单元测试和集成测试
  • 代码合并时,跑单元测试和集成测试
  • 部署前,拉分支时,跑单元测试和集成测试
  • 定时触发 e2e 测试
  • 定时触发性能测试
  • 定时触发安全测试(很少见)

单元测试和集成测试的区别,单元测试是对一个模块的测试,集成测试是对多个模块的测试,主要在于一个颗粒度的不同。 e2e 测试是端到端测试,是对整个系统的测试,主要是测试系统的功能是否正常,是以用户视角来看的,一般就是模拟用户的操作, 来调用API,甚至有些场景还会模拟用户的行为,比如点击,输入等。

不仅要测试,要早测试,要多测试,而且要自动化测试(当然并不是说不要手动测试)!

不留破窗

有问题就要修复,越等到后面修复的成本越高。

不要温水煮青蛙,一旦习惯了破窗,就会变成习惯,最后就会变成了一种文化。

正交性

正交性是指,系统中的各个部分之间是独立的,互不影响。这样的系统更容易维护,更容易扩展。我们常说的解耦,其实就是 为了提高正交性。

想象一下,如果你在驾驶一辆新的汽车,汽车没有正交性。转动方向盘的时候,可能会提升车速,换挡的时候,方向盘会打转, 刹车的时候,可能会加速。这样的汽车,你敢开吗?

软件也是一样的。UNIX文化常说的 KISS 和 DRY,也是为了提高正交性。

自动化

能自动化的,都自动化!

好文档,好注释

首先要有一个好的代码,如果代码本身命名清晰,逻辑清晰,其实是不需要注释的。如果代码比较复杂,或者有一些历史逻辑或者 特殊处理,那么则需要配备对应的注释和文档。


更多文章
  • OAuth2 为什么需要 Authorization Code?
  • 任务队列怎么写?python rq源码阅读与分析
  • XMonad 配置教程
  • Haskell简明教程(三):Haskell语法
  • Haskell简明教程(二):从命令式语言进行抽象
  • Haskell简明教程(一):从递归说起
  • 2017年必装的VIM插件推荐
  • TCP/IP简明教程 - 从零构建TCP/IP协议(二)连接,断开与拥塞控制
  • TCP/IP简明教程 - 从零构建TCP/IP协议(这次叫PCT协议)
  • Lua Manual 阅读笔记
  • Golang Map 源码阅读与分析
  • MySQL 零碎知识 - MySQL必知必会
  • Golang slice 源码阅读与分析
  • 经典好书推荐(2017)
  • Golang log库 源码阅读与分析



  • 文章来源: https://jiajunhuang.com/articles/2024_09_07-the_pragmatic_programmer.md.html
    如有侵权请联系:admin#unsafe.sh