JavaRush /Java Blog /Random-KO /요다 조건
MAX
레벨 16
Киров

요다 조건

Random-KO 그룹에 게시되었습니다
스타 사가의 에피소드 V 출시 40주년을 기념하여 Star Wars 및 Java/JavaRush의 모든 팬에게 짧은 게시물을 바칩니다! 요다 조건 - 1가끔 인터넷에서 흥미로운 것들을 많이 찾을 수 있는데, 얼마 전 저는 Yoda Conditions 라고 불리는 언뜻 보기에 꽤 재미있는 프로그래밍 방법을 발견했습니다 . 간단히 말해서, Yoda 조건(또한 Yoda 표기법)은 조건문에서 친숙한 비교 표현식의 두 부분이 반전되는 프로그래밍 스타일입니다.
if (5 == a) {
    // do something
}
이 스타일은 C와 유사한 구문을 사용하는 언어에서 사용할 수 있으며, 대부분 및 표현식에서 사용 if됩니다 while.
if (0 == variable) {
    // do something
}

while (false == endingCondition) {
    // do something
}
상수 표현식을 비교 연산자의 왼쪽으로 이동하는 이유는 무엇입니까? Saga의 9개 6개 부분 을 모두 마라톤으로 시청한 후 우리가 잠도 자지 않고 앉아 애완동물 프로젝트를 위한 코드를 작성하고 다음을 작성하는 가상의 상황을 가정해 보겠습니다 .
void checkNumber(int a)
{
    if (a = 13) // Здесь-то и появляется так называемый unexpected behavior!
    {
        printf("Number is 13");
    }
}
이 경우 프로그램을 실행할 때마다 메소드에 Number is 13"전달된 인수에 관계없이 문자열을 받게 됩니다 . 이것은 우리가 기대했던 것이 아닙니다! 초보 프로그래머들 사이에서는 논리적 오류가 꽤 자주 발생할 수 있습니다. (저를 믿으세요. 저도 알고 있습니다.) 그러나 컴파일 단계에서 13 = a와 같은 코드는 오류를 생성합니다. 정수 값은 상수이고 그에 따라 변경("a"로 전환)할 수 없기 때문에 우리는 확실히 간과하지 않을 것입니다. аcheckNumber(int a)요다 조건 - 1

Yoda의 조건을 사용하는 데에는 장단점이 있습니다.

라이트 사이드:

  1. 목표가 비교일 때 변수에 대한 할당을 방지합니다.

  2. 안전하지 않은 "Null Behavior" 문제 해결( NullPointerException) // Wikipedia의 예

  3. 요다 없이:

    String myString = null;
    if (myString.equals("foobar")) { /* ... */ }
    // This causes a NullPointerException in Java

    요다와 함께:

    String myString = null;
    if ( "foobar".equals(myString) ) { // Результат - Ложь
       /* не выполняется */
    }

어두운면:

  1. 귀하의 코드를 보는 사람들의 코드 가독성은 더욱 복잡해지며, 코드 인식에 대한 부담이 늘어납니다.
  2. 좁은 범위, 같음 비교 또는 상수와의 비교만 사용되며 null을 확인합니다.
  3. 많은 컴파일러는 이미 이러한 종류의 오류를 "확인"하고 잠재적인 오류가 있는지 미리 경고합니다.
Yoda 표기법의 대안으로 단위 테스트를 사용할 수 있습니다. 구 공화국 시대에는 좋은 테스트를 수행하면 코드에 오류가 없고 작성된 대로만 수행된다는 것이 보장된다고 했습니다. 어떤 유용한 관행을 알고 있나요? 댓글로 여러분의 지식을 공유해보세요! 그리고 좋아하는 에피소드도 써보세요! 그리고 포스가 당신과 함께하길 바랍니다!
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION