State 和 Status 傻傻分不清

5,101 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

在软件开发的过程中,我们经常会遇到需要表示状态的时候,而此时我们会自然的想到 state status,巧的是这两个词的中文意思还是一样的。所以可能在项目中我们会看到 state 和 status 漫天飞,那么问题来了,到底该使用哪一个?今天我们就来一起探讨一下。

既然都是英文,那就先来看一下两个单词的英文解释。

State: the particular condition that someone or something is in at a specific time.

Status: the situation at a particular time during a process.

State is used to describe a stage in a process (e.g. pending/dispatched).

Status is used to describe an outcome of an operation (e.g. success/fail).

Status is a final (resulting) State.

相信经过上面的解释,你也能看个大概,这里我说一下我的理解,state 表示的是一种状态,这种状态可以是独立的,也可以是一整个连续的状态集合。而 status 是值特定时期的状态,可以把 status 理解为 state 的单个子集,每一个 status 都代表一种特定情况下的状态。

举几个开发中比较常见的例子,如果要定义 Enum 这时应该使用 state,它表示的就是一套状态集合,不指定单独的某一个。对应的,我们为某个对象设置一个状态列,这时就应该使用 status,因为对每一个对象的来说,它的 status 在某一时间就是固定的。

上面说了开发中的例子,再来看看框架中定义的例子,状态机定义的是 state machine,这里也不是具体指明到底是什么状态,只是说我是一个状态机用来管理状态,还有一个 response 返回码使用的是 status,不管这个返回码是多少,它都是指定的一个状态。

总结

泛泛的指状态或是用来表示管理状态,状态的集合时,我们都使用 state,而真正表示某个具体的状态的时候我们使用 status。