2010-02-13 4 views
1

같은 부울 식을 구조화 어떤 혜택이 있습니까 : 항상 어떤 부울 연산자 차종을 첫 번째 피연산자로 변수를 넣고 사용, 난 항상 두 번째 방법을 사용했다부울 식의 피연산자에 대한 기본 순서는 무엇입니까?

if (0 < x) { ... } 

대신

if (x > 0) { ... } 

가 감각,하지만 최근에 나는 첫 번째 방법을 사용하는 코드를 읽고, 초기 이상을 극복하고 나는 그것을 훨씬 더 좋아하기 시작했습니다.

위의 예제처럼 변수가 첫 번째 피연산자가 아니더라도 < 또는 <= 만 사용하도록 모든 부울 식을 작성하기 시작했습니다. 나에게 그것은 가독성을 높이는 것으로 보이지만, 그것은 나일지도 모른다. :)

다른 사람들이 이것에 대해 어떻게 생각 하는가?

답변

3

비교하려는 표현에 가장 자연스러운 것을하십시오.

다른 연산 (예 : ==)에 대한 궁금한 점이 있다면 이전 항목에서 비교를위한 피연산자의 순서 (및 그 이유)를 비교하는 것입니다.

+1

나는 동의한다. 그러나 나는 가장 가독하다고 말할 것이다. –

+0

@sadboy :'x> 0'이 더 읽기 쉽다는 것을 알았습니다. 누군가 다른 사람이'0 kennytm

+0

나는 방금 전적으로 주관적이라고 말했듯이, 무엇인가가 흐르거나 더 명확하게 읽혀지면 어떠한 상황이나 상황에서도 그걸로 간다. –

0

== 대신 을 사용하는 문제를 피하기 위해 주로 if 조건에서 수행됩니다. 일관성을 유지하기 위해 많은 사람들이 다른 운영자에게도 같은 것을 사용합니다. 나는 그것을하는 것에 어떤 문제도 보지 못한다.

0

'읽기'에 가장 적합하게 사용하십시오. 한 가지 지적 할 것은 값이 범위 내에 있는지 테스트하려고하는 경우 수학 표현식에있는 것처럼 경계가 '외부'에 있도록 쓰기를 시도합니다.

그래서, 그 테스트 (0 < < X = 10)

if ((0 < x) && (x <= 10)) { ... } 

대신

if ((0 < x) && (10 >= x)) { ... } 

또는

if ((x > 0) && (10 >= x)) { ... } 

이 패턴 make가 로직을 따르는 것이 다소 쉽다는 것을 알았습니다.

0

우선 번호를 지정하는 것이 장점은 == ==를 원할 때 사용하는 버그를 예방할 수 있다는 것입니다.

if (0 == x) // ok 
if (0 = x) //is a compiler error 

는 미묘한 버그 비교 :

if (x = 0) // assignment and not comparison. most likely a typo 
+0

대부분의 컴파일러 (예 :'gcc -Wall')에는'if (x = 0)'에 대한 경고가 있어야합니다. – kennytm

0

는 오른쪽에있는 변수 표현식을 작성하는 특별한, 그리고 그 unusualness 가독성의 직접적인 결과는 고통으로 솔직히 말해서. 코딩 규칙은 관례에 따라 본질적인 가치가 있습니다. 사람들은 특정 표준 방식으로 작성되는 코드 작성에 익숙하며, x >= 0이 하나의 예입니다. 이러한 단순한 규범을 불필요하게 벗어난 것은 합당한 이유없이 피해야합니다.

"초기 기괴함을 극복해야만한다는 사실은 아마도 붉은 깃발이어야합니다.

Java에서 헝가리 표기법을 사용하지 않는 것처럼 0 < x을 쓰지 않습니다. 로마에있을 때는 로마인처럼 행동하십시오. 로마인들은 x >= 0이라고 씁니다. 아니, 큰 거래는 아니지만 불필요한 작은 변덕처럼 보입니다.

관련 문제