4

내가 일하는 회사에서 최근에 모든 '매우 가시성이있는'부울 논리가 분리 표준 형식으로 표현되어야한다는 위임장이있었습니다. 그 코드를 의무화에 대한 의욕이 표현 될 수있다 무엇분리 표준 형식으로 코드를 표현하는 것이 중요한 이유는 무엇입니까?

#if defined(A) || (defined(C) && defined(D)) || defined(B) 

: 예를 들면 그래서

#if (defined(A) || defined(B)) || (defined(C) && defined(D)) 

가 있었다 (언어 무신론자는 개념이 되더라도)로 대체한다 방법? 이점은 무엇입니까?

+1

두 표현식 모두 DNF입니다. 처음에는 그냥 불필요한 괄호가 있습니다. 이것은 코딩 지침의 실제 예입니까? –

+0

이 예는 DNF를 기반으로 변경을 요청한 최근 이메일 체인에서 나온 것입니다. 그것은 정말로 빈약 한 예라는 점에서 오류에 사과드립니다. –

답변

4

장점은 코드베이스 내의 표준/정규화 된 형태로 논리를 표현하면 이론적으로 프로그래머가 이해하고 유지 보수하기가 더 쉬워진다는 것입니다.

그런 규칙이 없으면, 일부 프로그래머는 관리자가 그것을 풀기가 어려워지는 방식으로 표현을 "최적화"하려고합니다. 또한 공통된 형식을 사용하면 새로운 표현식이 필요한 경우 쉽게 작성할 수 있습니다.

(이러한 장점은 논쟁의 여지가있다. 어떤 문체 가이드 라인과 마찬가지로 일관된 규칙을 가지고하는 것이 그 대안을 통해 하나의 규칙의 선택보다 더 중요 따라 할 수 있습니다.)

1

귀하의 예제는 매우 가난하지만 (두 표현식이 있습니다 DNF에서) 누군가가이 정책을 강요하는 이유를 알 수 있습니다.

정상적인 양식은 모든 표현식의 양식이 동일하다는 장점이 있습니다. DNF에서 그 형식은 조항/조건의 목록이며, 그 중 하나가 사실이어야합니다. 이 절은 차례대로 리터럴/조건의 목록이며 각각은 참이어야합니다. DNF는 CNF보다 적은 괄호 필요 괄호를 생략하면 에러되지 않도록

DNF는 특히 대부분의 구문에서, 하지가 더 높은 우선 순위를 가지고 또는보다 높은 우선 순위를 갖는 장점이있다.

1

코딩 표준을 일관되게 구현하는 것만 큼 중요하지 않은 경우가 많습니다. 일관되게 작성된 코드를 사용하면 가독성이 크게 향상되고 여러 번 선택해야하는 사람들이 지혜를 코딩하는 것보다 개인적인 취향을 행사하는 경우가 많습니다.

나열된 표준이 실제로 도움이되었다고 가정합니다. 대부분의 사람들은 & & 연산자가 || 연산자보다 높은 연산자 우선 순위를 갖고 있다는 것을 깨닫지 못한다고 말하고 싶습니다. & & 연산자와 피연산자를 사용하면()보다 명확한 작업을 수행하는 데 도움이됩니다.

피연산자 중 하나만 계산 한 후에 표현식의 값을 결정할 수있는 경우 많은 언어에서 부울 식의 두 피연산자가 모두 실행되지 않을 수 있습니다. 예를 들면 :

1 (trueMethod() || falseMethod())

2

(falseMethod() ||() trueMethod) 한 경우에만 trueMethod()에서

가 실행된다. 그러나 사례 2에서 두 가지 방법이 모두 실행됩니다. 주문은 큰 차이를 만들 수 있습니다.

관련 문제