코드를 작성하다 보면 어떤 객체의, 혹은 객체가 가리키는 어떤 것에 대해 상태를 가리켜야 하는 경우가 있다. 번역에서 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는 특정 연산의 결과가 정확히 떨어지는 경우에 사용한다고 보면 되겠다.

ec2_lifecycle

AWS EC2는 위와 같은 라이프사이클을 가진다. EC2의 상태는 이 중 하나를 반드시 가리키므로 이는 State가 된다. 그래서 EC2에는 pending/running 등을 state라고 부른다. 그런 의미에서 React라이프사이클도 각 단계가 State가 된다.

반면 HTTP Status Code를 보자. 이는 연산 결과로 인해 나온 것이고 이 상태는 다른 요청을 보내기 전까지는 고정 상태를 가진다. 따라서 여기서는 State보다는 Status가 어울린다.

대강 정리하면 다음과 같을까?

State

  • 라이프사이클을 가지는 것?
  • 연산 완료 후 얻는 결과가 아니며, 트랜지션이 많은 경우?

Status

  • 어떤 프로세스의 결과(과정이 아니다)가 특정한 상태를 만들어낸 경우

예제

State? Status?AnswerDescription
EC2 LifecycleState
React LifecycleState
HTTP Status CodeStatus