2013-09-23 5 views
0

else 조건과 충돌이 있습니다. 나는 2 가지 방법으로 프로그램을 쓸 수있다.Else 문 사용법

  1. 방법 1

    $msg = ''; 
    if(cond) 
    { 
        $msg = 'success'; 
    } 
    else 
    { 
        $msg = 'error'; 
    } 
    
  2. 방법 2

    $msg = 'error'; 
    if(cond) 
    { 
        $msg = 'success'; 
    } 
    

당신은 더 나은 방법 인 방법을 말해 주시겠습니까? 감사합니다

+1

'$ msg = (cond)는 어떻습니까? '성공': '오류'; – Nobody

+0

두 번째 것이 더 좋습니다. 줄무늬가 작아지고 동일한 동작, 영향을 미치지 않습니다. – DontVoteMeDown

+5

이 경우에는 아무런 차이가없는 것 같지만, 어림짐작으로 변수를 "안전"상태 또는보다 가능성있는 조건으로 설정하고 싶습니다. 따라서 긴 검사 목록이되어 뭔가를 놓친 경우, 또는 예기치 않은 일이 발생하면 적어도 기본값을가집니다. – Mike

답변

3

, 내가 처음 하나를 선택할 것입니다.

$msg = ''; 
if(cond) { 
    $msg = 'success'; 
} else { 
    $msg = 'error'; 
} 

이것은 읽기 쉽고 무엇을 하려는지 명확하게 알려줍니다. 조건이 true이면 메시지는 success이됩니다. 그렇지 않은 경우 메시지는 error이됩니다.

그러나 실제로는 위와 같이 간단하지만 대신 삼항 구문을 사용합니다. 매우 유용하고 코드를 줄일 수 있지만 경우에 따라 코드를 읽을 수 없게 될 수도 있습니다.

$msg = (cond) ? "success" : "error"; 

정말 멋진가? ternary operators에 대한 자세한 내용은 여기를 참조하십시오.

+0

조건이 지나치게 복잡하지 않으면 삼항 연산자가 훨씬 더 읽기 쉽고 변수가 모든 상황에서 초기화되는지 쉽게 알 수 있다는 장점이 있습니다. – Nobody

+1

이것은 꽤 주관적이지만 첫 번째 것이 더 낫다는 것에 동의합니다. 블록이 길어지면 코드에 익숙하지 않은 사람이 '$ msg'에 "기본"초기화가 있음을 "잊어 버릴"수 있습니다. – jedwards

+0

@Nobody : 동의합니다. *이 경우에는 최상의 솔루션과 같이 삼항 연산자를 사용합니다. –

1

나는 두 번째 줄이 더 적은 줄과 기본 동작을하는 것이 더 좋다고 말하고 싶습니다. 무엇을하든, 다른 체크를 도로에 추가하더라도 $ msg에 무언가가 들어 있다는 것을 알 수 있습니다.

$msg = (cond) ? 'success' : 'error';

1

코드의 가독성 문제를, 그래서 정말 모양을 단순화 때 나는 삼항 연산자를 사용하십시오 : 그러나, 나는이 경우 삼항 연산자를 사용합니다. 이 '읽고 이해하기 쉬운 "으로 간주 될 수 있으며,이 경우 이후

function foo($stuff) { 

    $var = null; 

    if ($stuff === true) { 
    $var = true; 
    } else { 
    $var = false; 
    } 

    return $var !== null ? true : false; 
} 

return $var !== null ? true : false 매우 짧은, 이것을 고려하십시오.

이것을 고려,

function foo($stuff) { 

    $var = null; 

    if ($stuff === true) { 
    $var = true; 
    } else { 
    $var = false; 
    } 

    if ($var !== null) { 
    return true; 
    } else { 
    return false; 
    } 
} 

같은 일이 있지만, 더 이상 조금 조건이 그렇게 오래되지 않은 경우

결론

  • , 그것은 원 사업자와 막대기 괜찮습니다 (가독성 때문에). 방법은 클래스 내의 함수이기 때문에 그러나 그 경우에, 당신은 더 나은, 또한이 일 "접근 방식"이 아닌 "방법"을 호출해야 if/else

스틱 것 없습니다.