문제

나는 이것을 보았지만 왜 그런지에 대한 명확한 설명을 듣지 못했습니다 ... 이것은 C# 또는 vb.net 또는 perl 등이 아니라 모든 언어에 대한 것입니다.

두 항목을 비교할 때 때때로 "점검"값이 오른쪽 대신 왼쪽에 표시됩니다. 논리적으로 나에게, 당신은 당신의 변수를 먼저 나열한 다음 비교하는 값을 나열합니다. 그러나 나는 "상수"가 먼저 나열되는 반대 방향을 보았습니다.

이 방법에 어떤 이득이 있습니까?

그래서 대신 :

if (myValue > 0)

나는 본 적이:

if (0 < myValue)

또는

if (Object.GimmeAnotherObject() != null)

다음과 같이 대체됩니다.

if (null != Object.GimmeAnotherObject())

이것에 대한 아이디어가 있습니까?

티아! 케빈

도움이 되었습니까?

해결책

일부 개발자는 왼쪽에 상수를 그렇게합니다.

if(0 = myValue)

값 0을 할당 할 수 없으므로 컴파일러에서 오류가 발생하기 때문입니다. 대신, 당신은 그것을 변경해야합니다

if(0 == myValue)

이것은 타이핑 이후 많은 고통스러운 디버깅을 방지합니다.

if(myValue = 0)

완벽하게 합법적이지만 아마도 당신은 아마도 의미가 있습니다

if(myValue == 0)

첫 번째 선택은 당신이 원하는 것이 아닙니다. 그것은 당신의 프로그램을 미묘하게 바꾸고 모든 종류의 두통을 유발합니다. 그것이 명확 해지기를 바랍니다!

다른 팁

나는 단순한 규칙을 생각하지 않지만 상수는 먼저 또는 상수 마지막이 매우 똑똑한 선택이 아닙니다. 수표가 의미론을 표현해야한다고 생각합니다. 예를 들어 범위 검사에서 두 버전을 모두 사용하는 것이 좋습니다.

if ((low <= value) && (value <= high))
{
    DoStuff(value);
}

그러나 나는 당신이 언급 한 사례에 동의합니다 - 나는 지속적이지만 다른 방식으로 그렇게 할 분명한 이유를 볼 수는 없습니다.

if (object != null)
{
    DoStuff(object);
}

C ++에서는 모두 유효하고 컴파일됩니다

if(x == 1)

그리고

if(x=1)

그러나 당신이 이것을 이렇게 쓰면

if(1==x)

그리고

if(1=x)

그런 다음 1에 대한 할당이 잡히고 코드가 컴파일되지 않습니다.

Const 변수를 왼쪽에 넣는 것은 "더 안전한"것으로 간주됩니다.

할당을 위해 왼쪽에 const 변수를 배치하는 습관에 빠지면 기본 작동 모드가되는 경향이 있으므로 평등 점검에도 나타나는 것을 볼 수 있습니다.

.NET의 경우 컴파일러가 다음과 같은 조건으로 할당 할 수 없으므로 관련이 없습니다.

if(x=1)

(다른 사람들이 말했듯이) 나쁜 연습이기 때문입니다 (놓치기가 쉽기 때문입니다).

이에 대해 걱정할 필요가 없으면 변수를 먼저하고 값을 두 번째로 두는 것이 약간 더 읽기 쉽지만 이것이 유일한 차이입니다. 양쪽을 평가해야합니다.

예를 들어 '='로 입력 한 오타를 잡는 코딩 실습입니다.

왼쪽에 상수가있는 경우 모든 할당 연산자는 상수에 할당 할 수 없으므로 컴파일러에 걸립니다.

많은 언어 (특히 C) 코드를 작성할 때 많은 유연성을 허용합니다. 왼쪽의 상수는 당신에게 비정상적으로 보이지만, 당신은 또한 과제와 조건부를 함께 프로그램 할 수 있습니다.

if (var1 = (var2 & var3)) { /* do something */ }

이 코드는 부울 결과를 얻습니다 var1 또한 / * 무언가를하십시오 * / 결과가 사실이라면.

관련 코딩 관행은 조건부 표현이 그 안에 과제가있는 코드 작성을 피하는 것입니다. 프로그래밍 언어는 그러한 것들을 허용하지만. 조건부 내 할당이 드문 일이므로 일반적인 코드에는 그러한 것이 없기 때문에 그러한 코드를 많이 만나지 않습니다.

좋은 것이 있습니다 C 언어 코딩 관행 기사 IBM DeveloperWorks 아마도 그 언어로 글을 쓰는 사람들과 여전히 관련이있는 사이트.

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