2012-10-19 3 views
0

대 나는 몇 가지 코드를 찾고 있어요, 나는 다음과 같습니다 라인을 참조하십시오사용 INT는 부울

// 1 if timer is executing, else 0 
private int _inTimer; 

이 진 플래그로 나타납니다. 당신은 타이머에 있거나, 그렇지 않습니다.

왜 이것을 bool이 아닌 int로 선언 하시겠습니까?

결국 다른 상태를 추가하려는 경우 시나리오를 이해할 수 있지만 열거 형을 사용한다고 주장합니다.

+8

모든 코드가 완벽하지는 않습니다 ... –

+1

이 필드가 외부 소스에서 채워 졌습니까? – Sklivvz

+1

아마도 이것은 원래 C 코드로 번역 된 C#이거나 프로그래머가 작성한 것으로 C 코드로 작성됩니다 –

답변

4

Interlocked.CompareExchange과 같은 원자 연산을 사용해야하는 경우 bool 대신 int을 사용할 수 있습니다.

추신 : 저는 Interlocked.CompareExchange<T>에 대해 알고 있지만 .NET 3.5에 도입되었으며 참조 유형 만 지원합니다.

+0

당신은 완전히이 시나리오를 못 박았습니다. – earthling

1

bool처럼 사용하려는 경우 bool을 사용하십시오. 다른 개발자가 의도를 더 쉽게 이해할 수있게 해줍니다. 정수는 아무도 1보다 높은 값을 할당하지 못하게하고 bool은 true 또는 false을 사용하는 것으로 제한됩니다.

4

여기서는 int을 사용하는 것으로 상상할 수 있습니다. 한 번에 두 개 이상의 타이머가 동시에 사용될 수 있습니다. 확인하십시오.이 변수가 카운터로 사용되지 않으면 즉시이 코드를 리펙토링합니다.

4

사람이 Boolean에 대해 알지 못했을 수 있습니다. 또한 실제로는 더 많은 주 (州)가 int으로 기록되고 실제로 댓글을 달았습니다.

코드의 주석에 따라 bool을 사용했을 것이며 2 개 이상의 주를 필요로한다면 Enum을 사용했을 것입니다.하지만 다시는 그렇지 않습니다. 코드베이스의 구현 세부 사항을 알고 있어야합니다.

1

실제로 여기서 int을 사용할 이유가 없으므로 boolean 또는 enum이 분명히 더 나은 선택이 될 것이지만 나는 그런 작은 일을 처리하지 않을 것입니다. 이와 같이 작은 것에 초점을 맞추는 대신 코드를 개선 할 수있는 더 많은 변화가있을 것이라고 확신합니다.