我是如何写程序的

做为一名软件工程师,日常的工作就是去编写程序,写一段程序很简单,就比如 “hello world“。但是如果想要写好一段程序,就不是那么容易的事了,这篇文章主要是记录一下自己在编程时的一般流程。

1. 明确并且理解需求

最近在读一本关于微服务架构的书,其中对需求有这样一个定义:

需求是一个必须要解决的问题,以及围绕这个问题的特定上下文环境

将每个开发任务当成需要解决的一道数学题。那么在解题的第一步就是要“读懂”题目, 也就是说理解题目在描述什么,并且明确问题的答案应该是什么。

所以在开始变编码之前一定要明确并且理解自己需要做什么,自己的产出会是什么。

如果将程序看作是对数据的一个映射,是一个函数,那么在确定好需要后,我们就可以得到如下的一个表达式

1
Output = F(Input)

我们的任务就是完成函数 F, 在给定输入后,得到所需要的输出。

2. 分解编码步骤

程序等于算法加上数据结构。

在有了明确的问题之后,就需要思考如何去解决这个问题了。

在确认好需求之后,我就会在纸上列出已有的条件,然后思考如何完成 F。

首先, 我会定好输入输出的数据结构。

然后,我会开始画时序图或者是流程图,确认处理步骤,理清逻辑,划分模块。

最后,我把需要做的事拆分成一个个小的 task,写在便签上,产出 todo list。

3. 编写测试用例以及具体的程序

一个良好的程序是离不开单元测试的,单元测试保证了程序的正确性,也可以在之后的重构过程中起到至关重要的作用。

因此在划分好模块后,我会将需要的处理函数定义好。然后就是为这些函数编写各自的单元测试,通常我会编写三个测试,分别处理正常的数据,处于边界的数据,以及超出边界的程序。

在写完单元测试后就会跑一遍测试,这时不出意料所有的测试都应该是失败的,不过没关系,我的目标是让所有的测试通过。

接下来就是要去编写具体的程序,根据 task 将程序一步步的写完,每完成一个模块就跑一次测试,然后 commit。保证当前的程序是正常工作的。然后就是重复,code-test-commit 的步骤。

在完成所有的编码以及通过所有的测试之后,就将每个小 commit 合并成一个大的 commit。到目前为止基本的功能就完成了,但是这不代表我们的程序就没有问题的。这时候需要重新读一遍自己的程序,看看其中是否包含了 《重构》 中所说的坏味道的代码,如果有,那就进行重构,然后测试,提交。

在做完上面的所有工作时候,就可以提交自己的代码了。

以上就是我通常的编码过程了。


我是如何写程序的
https://blog.zhangliangliang.cc/post/how-do-I-write-program..html
作者
Bobby Zhang
发布于
2021年2月4日
许可协议