2011-03-19 4 views
1

부울이지만 N 중에서 2 개의 의미있는 값을 가질 수있는 변수의 이름을 무엇입니까?2 값 변수의 변수 이름이 부울로 전달 되었습니까?

예 : x는 "red"또는 "blue"값을 가질 수 있습니다.

bRed 또는 isRed를 호출하는 것은 값이 true 인 경우 의미가 있지만 "false"경우에 대한 정보는 전달하지 않습니다.

YOU 은 int로 구현하거나 열심히 노력하면 enum으로 구현할 수 있습니다. 그러나 이것은, 열거를 선언하는 코드의 줄 이상을 의미 등

나는 "redOrBlue"생각하지만, 논리적으로, 값은 당신이 "redNotBlue"에 대해 어떻게 생각하십니까 :) 항상

사실 말하기

? 더 좋은 아이디어?

+0

열거 형을 사용해 보았습니다.하지만 더 많은 코드가 추가되었습니다. 상황은 2 개의 라디오 버튼 중 1 개였습니다. 일반적으로 나는 radiobutton1.Checked의 값을 매개 변수로 전달합니다. 열거 형을 사용한다는 것은 groupbox의 컨트롤을 반복하고, checked 라디오 버튼을 찾고, 열거 된 값에 매핑 한 다음 switch 문으로 함수 측에서 enum을 처리해야한다는 것을 의미합니다. –

+0

'radiobutton1.Checked? ColorEnum.Red : ColorEnum.Blue'? 그리고 다른 쪽 끝에서'if (color == ColorEnum.Red)'? – Aaron

답변

7

이 경우 열거 형을 사용해야합니다.

enum EntityColors 
{ 
    blue, 
    red 
}; 
+0

나에게 이길 ;-) "true"또는 "false"로 전달 된 의미가 없으므로 나는이 특별한 경우에 enum이 적절하다고 생각한다. – Pandincus

+0

나는 이미 그것을 고려했다. 그러나 더 이상 타입 안전하지 않거나 명확하지 않은 코드 라인을 의미한다. 나는 다시 생각할 것이다. –

+1

@ 래리, 나중에 또 다른 색상을 추가하기로 결정했다고 생각합니다. 변수의 이름이'RedNotBlueNotYellow'입니까? 또는 IsRed가 false 인 경우 파란색 또는 노란색을 의미합니까? 열거 형을 사용하면 읽고 유지하는 것이 매우 쉽습니다. –

3

는 그냥 가장 표현이다,이 경우에 enum을 사용합니다 코드의

public enum ColorValue { Red, Blue }; 
+0

은 이미 그것을 고려했지만 더 이상 타입 안전하지 않거나 명확하지 않은 코드 행을 의미합니다. 나는 다시 생각할 것이다. –

+0

@Larry : 분명히 더 읽기 쉽습니다. - 코드를 보면서 무엇을 다루고 있는지 정확하게 알 수 있습니다. 부울 값에 대해서도 마찬가지입니다. 또한 값 집합을 훨씬 쉽게 확장 할 수 있습니다. – BrokenGlass

+0

나는 열거 형이 정말로 더 분명하다고 생각한다. 부울 변수가 "가장 표현적인"이름 인 'falseMeansATrueMeansB'로 선언 된 곳에서 상속 한 코드는 무엇입니까? – bottlenecked

2

더 라인이 아직 개발자를 다치게하지 않았다. 형식이 잘못 지정되고 명명 된 변수가 잘못되었습니다. 가서 enumeration 타입을 사용하고, 의미가있는 곳, 즉 yes/no, true/false logic에서만 부울을 사용하십시오.

1

아마도 다른 문제를 해결하고 싶을 것입니다.

는 예를 들어, 당신은 인쇄 기능을 가지고

void print(string text, bool red) {...} 

레드는 다른 모든 파란색 중요 져야 할 엔트리입니다. 더 의미있는 무언가에 변수 이름을 변경하지 않는 이유는

void print(string text, bool isImportant) {...} 

이 API가 더 명확 할 것 마자 당신은 오렌지 당신이 당신의 변수 이름을 변경하지 않아도 말을 중요한 색상을 변경합니다.

0

이것은 반드시 enum으로 정의해야합니다.

귀하의 질문 "당신은 논리 형 변수의 이름 않지만 N 예에서이 개 의미있는 값을 가질 수 있습니다 무엇? : x는 값을 가질 수있다"는 "빨간색"또는 "블루

부울이있을 수 있습니다. 두 가지 값, "true"또는 "false"입니다. 예에서 두 개의 가능한 값은 "빨간색"또는 "파란색"이므로 부울 변수에 적합하지는 않습니다.

열거 형으로 구현 더 많은 코드 라인이지만 향후 개발자가 코드를 사용하므로 구현 비용이 상당하다는 점에서 더 확장 가능하고 유지 관리가 가능할 것입니다.

관련 문제