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


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.