문제

다음과 같은 열거형을 갖는 것이 좋은 아이디어라고 생각하시나요?

enum AvailableSpace {
   Percent10,
   Percent20,
   SqF500,
   SqF600
}

문제는 값 이름의 의미에 관한 것입니다.백분율과 평방 피트 모두.나는 그것이 좋은 생각이 아니라고 정말로 믿고 있지만 지침 등을 찾을 수 없었습니다.이를 지지합니다.

편집하다:이는 엔터티의 상태를 결정하는 데 사용됩니다.객체의 상태를 설명하기 위한 읽기 전용 속성으로 사용됩니다.전체 공간(예:객체 자체가 이를 알고 있음) 내부적으로 변환할 수 있는 옵션이 있으므로 백분율만 사용하거나 평방 피트만 사용하거나 둘 다를 사용합니다.논쟁은 "둘 다"가 좋은 생각이 아니라는 것입니다.

위는 물론 예시이지만 실제 문제는 일부 데이터 공급자가 우리에게 총계(sq.f.)를 보내고 다른 일부는 백분율을 보내는데, 내 목표는 UI를 통일하는 것입니다.몇 가지 근사치를 자유롭게 계산할 수 있으므로 정보를 얼마나 정확하게 표시하려는지에 따라 정확한 값이 조정됩니다.

문제는 내용이 아닌 값 이름의 의미에 관한 것입니다.(잠재적인) int 열거형에 백분율을 넣는 것이 좋은 생각이라면.

도움이 되었습니까?

해결책

대답:아니요, 값을 표현하기 위해 열거형을 사용하는 것은 좋은 생각이 아닙니다.특히 의미상으로 구별되는 두 가지 척도의 값입니다.값에 열거형을 사용하면 안 됩니다.

이유:Percent10 및 SqF600과 같은 두 척도의 열거형 값 사이의 관계는 무엇입니까?코드 내에서 표현할 수 있는 값 목록을 어떻게 확장합니까?이러한 값에 대해 비교 및 ​​산술 연산을 어떻게 수행합니까?

제안(요청하지는 않았지만 그럼에도 불구하고 여기에 있습니다.:-)):수행하려는 작업의 의미는 두 개의 필드(절대 면적에 대한 필드와 해당 절대 면적의 사용 가능한 백분율에 대한 필드)를 포함하는 구조체에 의해 더 잘 반영됩니다.이러한 구조를 사용하면 위의 열거형으로 표현할 수 있는 모든 것을 표현할 수 있습니다.예를 들어 절대 면적을 제공하는 데이터 공급자는 해당 면적과 100% 사용 가능한 구조체로 표시됩니다.백분율을 제공하는 데이터 공급자는 자신이 설정한 백분율과 절대 영역이 포함된 구조체로 표시되며, 해당 영역의 백분율은 데이터 공급자가 보고하려는 실제 사용 가능한 영역입니다.두 가지 유형의 공급자로부터 데이터의 "정규화된" 표현을 얻을 수 있으며 몇 가지 연산자를 추가하여 인스턴스와의 비교 및 ​​산술 계산을 활성화할 수 있습니다.

다른 팁

가능하다면, 나는 당신의 열거가 "퍼센트"와 "squarefeet"이고 두 번째 값은 정량 자입니다. 이것들을 구조물로 함께 묶습니다.

컨텍스트가 허용되면 두 개의 래퍼 유형 " %"및 "squarefeet"을 작성한 다음 일부 연산자 과부하를 만드는 것이 더 나을 수 있습니다. 따라서 "New Squarefeet (500) + New % (20)와 같은 작업을 수행 할 수 있습니다. " 열거의 사용을 제거하십시오.

업데이트: 값이 업계 인식 용어 인 경우 거의 상징이되는 시점까지는 이름 지정 체계가 적절할 것입니다. 예를 들어, 두 값 ( "ISO"및 INT 9001을 포함하는 열거)가 아닌 "ISO9001"과 같은 값을 포함하는 열거를 갖는 것이 안전합니다. 아래와 같은 열거를 갖는 것도 적절합니다.

public enum OperatingSystem
{
    Windows95,
    Windows98,
    Windows2000,
    WindowsXP,
    WindowsVista,
    MacOSClassic,
    MacOSXTiger,
    MacOSXLeopard
}

"백분율 10"및 "SQF500"이라는 용어가 예술 용어가 아니거나 사양, 데이터 사전 등에 잘 정의 된 경우, 열거에서 값으로 사용하는 것은 부적절합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top