명명 규칙 : "상태"대 "상태"[닫힘]


175

빠른 질문 : "Foo.currentState"vs "Foo.status"와 같은 두 필드와 "enum FooState"vs "enum과 같은 유형의 이름을 지정할 때"State "와"Status "를 사용할 때에 대한 귀하의 생각을 듣고 싶습니다. FooStatus ". 거기에 논의 된 협약이 있습니까? 우리는 하나만 사용해야합니까? 그렇다면 어느 것을 선택하고 그렇지 않은 경우 어떻게 선택해야합니까?


14
허. 다른 날 직장에서 나는 "state"라는 이름의 멤버와 "status"라는 이름의 멤버가있는 구조를 발견했습니다. 나는 단어의 의미와 단어의 변경 여부에 대해 생각하기 시작했지만 코드는 오래되고 잔인하고 작동하여 잠자는 개가 거짓말하도록했습니다. 오 .. 이것은 아마도 "답변, 답, 상태, 상태 ..."가 아니라 "댓글"일 것입니다.
smcameron

9
물론 이것은 닫힙니다. 잘 했어.
jn1kk

2
@jsn은 닫히는 것뿐만 아니라 (요즘은 아닌가?) 여전히 내가 여기에 기여한 가장 인기있는 것 :)
Sophistifunk

8
이것은 합법적 인 프로그래밍 질문입니다. martinfowler.com/bliki/TwoHardThings.html

2
상태는 "healthy", "degraded", "unavailable"등과 같은 간단한 레이블입니다. State는 모든 세부 사항을 포함합니다. 예를 들어 CPU 사용률 및로드 평균, 메모리 사용률, JVM 메트릭, 디스크 사용량 등

답변:


107

상황에 따라 다릅니다

상태는 일반적으로 엔터티의 전체 상태-특정 시점 (보통 현재)의 모든 값과 관계를 나타냅니다.

프로세스 나 워크 플로우에 문제가있는 상태는 더 많은 시점입니다. 더럽거나 (저장해야 함) 완료되었거나 입력 보류 중인지 등입니다.

나는 그것이 당신의 결정에 도움이되기를 바랍니다.


211

IMO :

상태 == 어떻게 지내세요? [좋은 / 나쁜]

상태 == 당신은 무엇을하고 있습니까? [휴식 / 일]


17
2009 년 어디에 있었습니까? 이 답변은 기술 전문 용어 (cpu 상태, 스레드 상태, 상태 시스템; 반환 상태, RAID 볼륨 상태 등) 및 기타 모든 것 (응용 프로그램 상태, 계정 상태 등)에서 가장 의미가 있습니다. 내가 일관성이 없다고 생각할 수있는 유일한 것은 "업무 상태"또는 "사물 상태"와 같은 것입니다. "상태"와 더 유사한 것입니다. 계속 진행하십시오).
Peter

4
주정부는 또한 단지“휴식 / 작업”보다 더 많은 정보를 보유하고 있음을 암시합니다. 그러나 그것이하고있는 작업 (또는 휴식)에 대한 모든 세부 사항.
BrainSlugs83

3
@ BrainSlugs83에서 제안한 것처럼 "나는 동생의 뒷마당에 나무 위의 집을 짓고있다"는 더 자세한 state 예가 될 것이다 . 이 예에서 내 상태 는 피곤하거나 땀이 나거나 활력이 넘치거나 행복 할 수 있습니다.
정복

4
나는이 예를 좋아한다. 깨끗하고 간결합니다. 실제 사용 State을 위해 상태 머신 (또는 워크 플로) 상태 노드의 그래프 내에 "표시된 노드"를 반영해야한다고 설명 함으로써이를 공리로 일반화 할 수 있습니다. -ing ") Status는 상태의 변경 (또는 유지) 결정을 위해 트리거에 의해 또는 관찰 된 값으로 사용될 수있는 일반 형용사 인 객체의 단순한 속성입니다. 아마 그것을 너무 생각하고 있습니다.
Alan McBee-MSFT

6
동의합니다 : STATUS는 STATE 변경의 결과 또는 진행 상황입니다.
Neil

16

일반적으로 State를 사용하여 객체 또는 시스템의 현재 상태를 전체적으로 의미합니다. 나는 어떤 행동의 결과를 나타 내기 위해 지위를 사용합니다. 예를 들어, 객체의 상태는 저장 / 저장되지 않고 유효 / 유효하지 않을 수 있습니다. 분석법의 상태 (결과)는 성공 / 실패 / 오류입니다. 이 상황 은 " 상황과 관련된 상태 또는 상태 "로이 상태를 정의하는 데 아주 적합하다고 생각합니다 .이 경우의 상황은 조치 / 방법의 적용입니다.


8

상태보다 상태를 선호하는 또 다른 (완전히 실용적인) 이유는 복수가 간단하다는 것입니다.

  • 상태-> 상태
  • 상태-> 상태

그리고 당신은 조만간 당신의 코드에 목록이나 배열 또는 어떤 상태라도 가질 것이며 변수의 이름을 지정해야 할 것입니다.


3
그냥 궁금해, 복수 상태가 stati해서는 안됩니까?
BiAiB

위키 낱말 사전은 상태를 말한다 : en.wiktionary.org/wiki/status#Noun . 그러나 다른 언어는 다른 복수형을 가지고 있습니다.
robinst

9
라틴어 복수형은 "statūs"이며, 긴 u가 있고 stati는 아닙니다.
Paŭlo Ebermann

6

"국가"이외의 다른 이유로 미국의 정치 부문을 언급하는 경우 많은 사람들이 "상태"를 사용하여 물체의 상태를 나타냅니다.


11
그것이 내가 사용했던 이유도 아니고, 내가 함께 일하거나 읽은 사람도 아닙니다.
Luke Schafer

4
그래서 무엇? 유효한 이유입니다. 명명 규칙입니다.
Dave Markle

4
네. 호주에서도 우리는 State라는 용어를 사용하여 1901 년 영연방에서 통일 된 이전의 개별 식민지를 설명했습니다.
Matthew Schinckel

address.state = 태즈 매니아; 의미가 있지만 device.state는 지리를 포함하지 않을 것으로 예상됩니다.
훼손됨

3

나는 방정식에 또 다른 관점, 즉 '발신자 요청자'를 추가 할 수 있다고 생각합니다.

발신자 관점에서, 나는 기꺼이 듣고 자하는 사람과 나의 상태를 전할 것입니다. 요청자의 관점에서 누군가의 지위를 묻습니다.

위의 내용은 불확실성 관점에서도 해석 될 수 있습니다.

  • 정의 됨 = 상태
  • 미정의 = 상태

당신의 상태는 어떻습니까? 나는 편안한 상태에 있습니다.

나는 이것이 하나의 해석 일 것이라고 확신하며, 이는 특정 상황에 적용되지 않을 수 있습니다.


1

빠른 사전 검사는 상태가 상태와 동의어이지만 다른 위치와 비교하여 위치에 대한 추가 해석이 있음을 보여줍니다 .

내가 사용하는 것이 그래서 상태를 한 다른 암묵적인 순서 또는 위치의 상대가없는 상태의 세트 및 대한 상태 않는 사람들을 위해 (아마도 오프 대기 -에?). 그러나 그것은 훌륭한 구별입니다.


1

내가 다루는 많은 엔티티 (계정, 고객)는 상태 (TX, VA 등)와 상태 (활성, 닫힘 등)를 가질 수 있습니다.

따라서 오해의 소지가있는 용어에 대한 요점이 가능합니다. 상태 이름이 ST_CD있고 상태는 표준화 된 데이터베이스 명명 규칙 (개인 선택이 아님) 이 있습니다.ACCT_STAT_CD .

OO milieux에 열거 형이 있으면이 문제는 중요하지 않습니다. 엄격한 유형 안전이있는 경우 컴파일러는 아무도이 작업을 시도하지 않도록합니다.

theCustomer.State = Customer.Status.Active;

당신이 역동적 인 환경에 있다면, 나는 더 걱정할 것입니다!

상태 머신이나 다른 상태 정보가 있고 그 용어가 우세한 도메인을 다루는 경우 상태가 완벽하다고 생각합니다.


주소는 고객이 아닌 고객의 주소에 속합니다 (예 : theCustomer.MailingAddress.State = Iowa;
훼손됨

@spemble 아마도 가능하지 않을 수도 있습니다. 주소가없는 사람에게 첨부 될 때 출생 상태 또는 거주 상태 일 수도 있으며, 주소, 라이센스, 허가 등과 같은 많은 다른 엔티티에 첨부 될 수도 있습니다. 어쨌든 확실하지 않습니다. 상태 머신 / 플래그 / 상태의 구현에 대해 State와 같은 일반적인 문제 도메인 용어를 사용하는 데 모호성이 있는지 여부에 대한 질문과 관련이 있습니다. 그리고 상태 또는 상태가 다른 의미를 갖는지 여부는 다릅니다.
Cade Roux

0

우리는 나의 현재 프로젝트에 대해이 논쟁에 대해 잠시 전에 토론했습니다. 나는 실제로 선호도가 없지만 일관성은 중요한 고려 사항입니다.

내 Sharp PW-E550에서 "상태"에 대한 첫 번째 (여러 가지) 정의 (굉장한 사전, 추가 할 수도 있음)는 "누군가 나 무언가가 특정 시간에 있다는 특정 조건"입니다. "상태"의 첫 번째 정의는 "상대적 사회적, 직업적, 또는 다른 사람 또는 무언가의 다른 입장"입니다. "상태"에 대한 두 번째 (마지막) 정의조차도이 맥락에서 "상태"보다 열등하다 : "특정 시간에서의 업무 위치, 특히 정치적 또는 상업적 상황에서".

따라서 우리가 내 사전을 사용하는 누군가가 가능한 한 쉽게하기를 원한다면 (New Oxford American Dictionary, 2001), "state"가 최선의 선택이 될 것입니다.

또한, Gang of Four 's book에는 State Pattern이라고하는 디자인 패턴이 있으며, 컴퓨팅 사전에서 용어를 확고하게 설정합니다.

이러한 이유로 나는 "상태"를 제안합니다.

추신 당신이 DDM입니까? 아직도 "상태"대 "상태"에 대해 쓰라린가? !!!!!!! LMAO!


-1

글쎄, 그들은 같은 것을 의미합니다. 나는 다른 것보다 큰 선호를 공표 할 필요는 없다고 생각하지만, 나는 라틴어와 고전 주의자처럼 들리는 것을 좋아하기 때문에 일반적으로 "상태"로 갈 것입니다. 내 세계에서 복수의 스키마는 스키마 (schemata)이기 때문에 나와 다른 방법은 거의 없습니다.


그들은 같은 것을 의미하지 않습니다.
BrainSlugs83

이 질문의 맥락은 소프트웨어이므로 질문이 유효합니다. 컴퓨터 시스템은 항상 시스템의 다양한 부분의 상태 / 상태를 결정하고보고해야하며, 소프트웨어를 디버깅하거나 개선하는 사람들에게는 기술적으로 이름을 지정하는 것이 매우 중요합니다.
장식하다

-1

Sophistifunk, State와 Status에 대한 인수를 얻게 될 것입니다. 가장 중요한 것은 하나를 선택하고 하나만 사용하는 것입니다. 이 내용을 팀과 논의하고 모든 사람들의 의견을 참조하십시오.

즉, 내 제안은 다음과 같습니다.

객체 지향 프로그래밍 언어를 사용한다고 가정하면 객체의 "상태"는 객체 자체로 표시됩니다. SomeObject.state가 잘못된 imo입니다. 귀하의 예에서 "상태"가 무엇을 나타내는 지 잘 모르겠지만, 자연스러운 직관은 이것을 상태보다 선호하는 것입니다.


1
하나를 고르고 하나만 고집하는 것은 터무니 없습니다. 두 가지 의미와 의미가 다릅니다. 예를 들어 "GameState"와 "GameStatus"를 고려해보십시오.이 둘은 서로 다른 의미를 가지고 있으며 서로 바꿔 쓸 수 없습니다.
BrainSlugs83

-2

전혀 같은 것이 아닙니다. 중지 및 시작 상태는 상태입니다. 중지 및 시작 상태입니다.

그것들을 같은 것으로 만들면 차량이 정지되었지만 현재 시동 중이라고 설명하는 방법은 무엇입니까? 또는 현재 제출되었지만 승인 프로세스에 아직 진입하지 않았거나 승인 중이지만 서명 대기 중 오류 상태로 보류중인 응용 프로그램입니까?


1
OP는 하나 또는 다른 것을 사용하도록 요구했다; 둘 다 아닙니다. Starting실제로는 State완전히 다른 점이라고 주장 할 수있다 Stopped. 시스템의 의미에 따라 다릅니다 . 예를 들어 Windows 서비스를 확인하십시오.
Andrew Barber
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.