문제
나는 이것을 보았지만 왜 그런지에 대한 명확한 설명을 듣지 못했습니다 ... 이것은 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 아마도 그 언어로 글을 쓰는 사람들과 여전히 관련이있는 사이트.