State와 Status는 뭐가 다른가?
코드를 작성하다 보면 어떤 객체의, 혹은 객체가 가리키는 어떤 것에 대해 상태
를 가리켜야 하는 경우가 있다. 번역에서 Status
/State
모두 대충 상태
라고 변역되므로 굉장히 오해하기 쉬운 단어긴 한데, 이거 정확히 어떻게 골라서 써야 할까?
굉장히 모범스러운 답이 있어서 우선 링크부터 붙인다.
- “What is the current status of this project?” The answer should be “In testing.”
- “What is the current state of this project?” The answer should be “On hold for financial analysis.”
이게 말로만 적으면 크게 이해가 안 와닿으니까 한번 예를 들어 보자.
State는 현재 진행 상태에서의 어떤 상태를 가리킨다. 따라서 트랜지션이 잦고 변화가 큰 경우 주로 State를 붙이는 것 같다. 반면 Status는 특정 연산의 결과가 정확히 떨어지는 경우에 사용한다고 보면 되겠다.
AWS EC2는 위와 같은 라이프사이클을 가진다. EC2의 상태는 이 중 하나를 반드시 가리키므로 이는 State
가 된다. 그래서 EC2에는 pending
/running
등을 state라고 부른다. 그런 의미에서 React
의 라이프사이클도 각 단계가 State
가 된다.
반면 HTTP Status Code를 보자. 이는 연산 결과로 인해 나온 것이고 이 상태는 다른 요청을 보내기 전까지는 고정 상태를 가진다. 따라서 여기서는 State보다는 Status가 어울린다.
대강 정리하면 다음과 같을까?
State
- 라이프사이클을 가지는 것?
- 연산 완료 후 얻는 결과가 아니며, 트랜지션이 많은 경우?
Status
- 어떤 프로세스의 결과(과정이 아니다)가 특정한 상태를 만들어낸 경우
예제
State? Status? | Answer | Description |
---|---|---|
EC2 Lifecycle | State | |
React Lifecycle | State | |
HTTP Status Code | Status |