포스와 함께 나타나는 것을… 요다 기법에 대해서
3213 단어 포엠tips신인 프로그래머 응원
스타 워즈에 나오는 그 요다입니다.
예를 들어, 이런 if문이 있다고 합니다.
변수 value 의 값이 100 인가 어떤가를 판정하는 if 문입니다.
if(value == 100) {
// valueが100のときにする処理
}
요다 기법에서는 이것을 다음과 같이 씁니다. if의 괄호 안에 주목하십시오.
if(100 == value) {
// valueが100のときにする処理
}
if의 괄호 안이
if(value == 100)
에서 if(100 == value)
로 변경되었습니다.요다 기법에서는, 정수(100)와 변수(
value
)를 도치시켜서 기술합니다.즉, 순서를 바꾸는 것입니다.
처리 결과는 모두 동일하다. 하지만...
두 예제는 두 가지 방법으로 실행하더라도 결과는 동일합니다.
일반적으로는
if(value == 100)
라고 쓰는 사람이 대다수라고 생각합니다.그렇지만, 그 쓰는 방법이라고 이런 실수를 해 버리는 일이 있습니다.
/* "==" が "="になってる! */
if (value = 100){
// 処理
}
value
와 100
를 비교하고 싶은데, 이것은 value
에 100
라는 값을 대입해 버리고 있습니다.그러나이 코드는 컴파일이 통과합니다. 아무런 오류도 내뱉지 않습니다.
왜냐하면,
value=100
는 “변수 value에 값 100을 대입한다”라고 하는 처리로서 성립해 버리고 있기 때문입니다.그렇지만, 요다 기법으로 같은 실수를 해 버렸을 때는 어떨까요?
/* "==" が "="になってる! */
if (100 = value){
// 処理
}
이 경우 컴파일러가 제대로 오류를 뱉습니다.
왜냐하면,
100=value
따위 처리는 무리입니다.즉 무슨 말을 하고 싶은가 하면…
요다 기법 쪽이 실수를 미연에 방지한다는 것입니다.
그러나, 기술은 진보하고 있다…
요다 기법은 컴파일러가 간과하는 실수를 막을 수 있습니다.
그러나 현대 컴파일러는
if (value = 100)
와 같은 if 안에 대입 처리가 들어간 설명을 찾으면 경고를 줍니다.if(value = 100) { }...
// Using the result of an assignment as a condition without parentheses ←コンパイラによる警告
요다 기법을 사용하지 않아도 컴파일러가 오류를 알게 되었습니다.
불쌍한 요다 기법…
지금은 더 이상 사용할 필요가 없는 기법입니다만, 정수와 변수를 도치시킨다고 하는 선인들의 발상 그 자체는 견습해야 한다고 느꼈습니다.
Reference
이 문제에 관하여(포스와 함께 나타나는 것을… 요다 기법에 대해서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Sirloin/items/d24e182ac405fbc8a280텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)