可能会提高百分之一开发效率的小技巧

在我们平时写代码的过程中,常规操作无外乎就是编写实际的业务逻辑、保存文件、编译和运行程序、查看结果。由于我们并不能保证一次性就能把程序写好,所以正常的过程时写一部分代码,然后运行程序,看看结果是否正常,再接着继续写。这样也就导致我们需要反复在编辑框和终端之间来回切换,在编辑框写代码,在终端运行程序。这其中会有很多重复的操作,需要我们每次机械地执行。那么,什么办法可以避免这些重复的操作呢?

思考

仔细梳理一下上述过程的操作,其中,只有写代码是需要我们思考的操作,而保存文件、编译和运行程序基本是不变的操作。
所以只要我们把不变的操作自动化,只在一开始执行,后续就不再操作就行了。那么怎么让这些操作自动化呢?接下来我们实践一下。

保存文件

目前流行的编辑器或者 IDE 基本都提供自动保存的功能。
拿 VSCode 来说,在设置里面,搜索 auto save,可以看见两个选项:

  1. 是否开启启动保存
  2. 延迟多久后自动保存

默认配置是 1s,所以,只要我们开启这个功能之后,后续 VSCode 在我们没有操作 1s 后会自动保存。

编译和运行

编译和运行一般在我们保存文件后操作。所以,只要我们能够监听到文件变化,重新运行一下编译和运行命令就行。
这里不需要去实现一个监听文件的程序,监听文件是一个比较常见的功能,主流的编程语言一般都会有相关的库实现,如 Go 的 reflex 库。
假设我们使用 Make 工具来构建程序,那里利用 reflex 库监听文件变化然后运行的命令可以是 reflex -r '\.go' make

查看运行结果

在日常开发中,我会把编辑器分为三个区域,分别为编辑区、编译区和运行区(编辑区是文本框、编译区和运行区是两个终端),如下图所示。

编辑区就是写代码的区域,编译区是查看编译日志的区域,运行区则是查看运行时输出日志的区域。
开始写代码的时候,我会在编译区输入编译和运行命令,如 make,在运行区输入查看日志的命令 tail -f log
在后续的开发中,我只需要专注在编辑区写代码。当编译有问题的时候,编译区会报错;当调试代码的时候,在运行区可以查看程序的输出日志。这样再也不用反反复复在写代码和运行程序的过程切换来切换去了。

Make

最后,我们把上述用到的命令写到 Makefile 文件里面,免得每次都要记住命令。
这里一共有四个 target,分别为:

  1. default(默认执行的,这里执行 reflex)
  2. run(程序运行命令)
  3. reflex(监听文件变化然后重新运行程序)
  4. tail(打印 log 文件命令)
1
2
3
4
5
6
7
default: reflex
run:
go run main.go >> log
reflex:
reflex -r '\.go' make run
tail:
tail -f log