2014-04-22 4 views
5

내가 다른 함수 function(boolean b)를 작성하고 내가 fA() 반환 true의 경우 fB()가 실행되지 않을 수 있습니다 다음 function(fA()||fB())를 호출하는 경우 내가 두 가지 기능, boolean fA()boolean fB()단락을 방지하는 방법?

이 있다고 가정합니다.

이 기능이 마음에 들지만, 여기서는 실행할 두 기능이 필요합니다. 명백한 구현 :

boolean temp = fA(); 
function(fB()||temp); 

은 추악하며, 여분의 줄이 있으면 읽기 어렵게됩니다.

Java 또는 다른 우아한 방법으로 도우미 변수없이 한 줄에 이것을 작성하도록하는 방법이 있습니까? 대신 |을 사용할 수 있습니다

+1

이 질문은 "단락을 방지"라고 생각해야합니다. – 2rs2ts

+4

참고 : 그것은 당신에게 더 좋을지 모르지만, 새로운 독자들에게는 분명히 당신의 의도를 숨길 것입니다. –

+0

@ 2rs2ts 예, 좋습니다. –

답변

13

, 그것은 short-circuit evaluation하지 않습니다

function(fB() | fA()); 

fB 경우에도 true, fA가 호출 될 것을 보장한다.

+0

은 천재입니다. 감사. 지금은 대답을 수락하기 전에 13 분을 기다려야합니다. –

+2

나는 이것이 천재인지 확신하지 못합니다. 많은 프로그래머에게 이것은 곧바로 오타가 될 것입니다 (나중에 '고칠 수 있습니다'). '|'는 일반적으로 비트 문자열/플래그 조작의 컨텍스트에서 사용됩니다. 이것이 그렇지 않은 경우 더 긴 (다중 행) 버전과 주석을 사용하는 것이 더 나을 것입니다. – Paul

+2

@Paul'|'은 이러한 경우에 사용하기위한 것입니다. 고전적인 예를 사용해야합니다. ** **이 경우입니다. 귀하의 의견은 오해의 소지가 있습니다. 프로그래머가 오타라고 생각한다면 프로그래밍하지 않는 것이 좋습니다. – Maroun

1

영리한 코드를 작성하려고합니다. 이렇게하면 장기적인 유지 관리가 어려워지고 사람들이 영리한 코드를 수정하고 해체 할 수 있습니다.

boolean val = false; 
val |= fA(); 
val |= fB(); 
function(val); 

매개 변수 val가, 또는 fB()가 호출되는 경우 경우 false를 반환 fA() 무슨 질문이 없습니다 : 할

올바른 점은 간단하고 명확하게 무슨 일을 작성하는 것입니다. 코드는 다른 영리한 버전보다 몇 줄이 더 많을 수 있지만 명확하고 간결하며 정확히 무엇을하고 있으며 다른 사람에게 다른 기능을 제안하지 않는 방식으로 수행하려고합니다.