2016-06-27 2 views
-1

에서 foreach는 조건 :코드의 가독성 : 만약 당신을 위해 더 나은 연습과 최적의 가독성 무엇 PHP

foreach ($k as $v) { 

    if($v == 10) { 
     continue; 
    } 

    // continue code ... 
} 

또는 :

foreach ($k as $v) { 

    if($v != 10) { 
     // code ... 
    } 

} 

어쩌면 바보,하지만 나는 종종 나 자신에게이 질문은. 당신은 어떻게 생각하십니까?

+0

나는 두 번째로 나아질 것이라고 생각합니다. –

+3

이것은 의견을 바탕으로 한 주제입니다. (예를 들어, 코드와 로직을 기반으로 선택하고 더 합리적인 것을 선택합니다.) – Rizier123

+0

내가 아는 한 두 번째 것은 O (1) 빠릅니다. 그래서 당신은 그것을 완전히 무시할 수 있고, 당신이 선호하는 방식으로 움직일 수 있습니다! –

답변

0

이 질문은 귀하가 저의 견해로 작업 한 코딩 표준을 기반으로 작성되었습니다.

나는

foreach ($k as $v) { 
    if($v != 10) { 
     // code ... 
    } 
} 

내가 $v가 첫 번째 옵션은이 같은 결과를 계속 말한다 (10)와 다른 경우에만 뭔가를 할 것입니다 알이 방법을 선호합니다. 하지만 코드가 있다면 혼란 스러울 수 있습니다.

답변은 여전히 ​​원하는 것을 기반으로합니다.

+3

* 많은 좋은 질문은 전문가 경험을 토대로 어느 정도의 의견을 제시하지만이 질문에 대한 답변은 사실, 참고 문헌 또는 특정 전문 지식보다는 의견에 거의 근거를 두는 경향이 있습니다. * 의견 기반 질문은 주제와 관련이 없습니다 , 그 (것)들에게 결정적인 응답이 결코 없기 때문에,. 그래서 그들에게 대답하는 것은 결코 도움이되지 않기 때문에 그들에게 대답하는 것은 도움이되지 않습니다. – Rizier123

1

이것은 설문 조사보다 많기 때문에 답변이 정확하지 않습니다.

하지만, 일반적으로 당신의 if가 부정 또는 쉽게로 다른 케이스로 기록되어있는 경우, 나는 continue와 함께 갈 것 if ( if ($v == 10) {} else {/*...*/}에서와 같이)에 대응. 따라서 일부 예외를 제외하고 $v에 대한 모든 사례를 실행하려는 경우 시작시 이러한 예외를 필터링하고 continue을 수행합니다.

그래서, 내가 선호하는 것 :

foreach ($k as $v) { 

    if($v == 10) { 
     continue; 
    } 

    // code ... 
} 

그 이유는 많은 예외가 발생하는 경우, 그들은 다음과 같이 쉽게 추가 할 수 있다는 것입니다.

이 가

시간이 추가 부여,이 또한

if ($v != 10 && $v != 29 && $v != 12) { 
    // ... code 
} 

으로 수행 할 수 있지만,이 if 빠르게 읽고보다 이해하기 더 복잡 할 성장할 수있는 여러 조건에 슬릿 할 수없는 이상적입니다

foreach ($k as $v) { 
    if($v == 10 || $v == 29) { 
     continue; 
    } 
    if($v = 12) { 
     continue; 
    } 

    // ... code 
} 
로 점점 더 많은 예외.

이 예를 선택하십시오. 어느 것이 더 명확하고 정신적으로 파악하기 어려울 것이라고 생각합니까?

foreach ($k as $i => $v) { 
    if ($i = 8) { continue; } 
    if ($i % 3) { continue; } 
    if ($v['foo'] == 'bar') { continue; } 
    if ($v['bar'] == 'foo') { continue; } 
    if ($v['foobar'] == 10) { continue; } 
    if ($v['value'] < 0 || $v['value'] > 100) { continue; } 

    // else, do code... 
} 

또는 ... 또한

foreach ($k as $i => $v) { 
    if ($i != 8 && !($i & 3) && $v['foo'] != 'bar' && $v['bar'] != 'foo' && $v['foobar'] != 10 && $v['value'] >= 0 && $v['value'] <= 100) { 
     // do code ... 
    } 
} 

, 내가하지 (10)이 동등 할 경우 건너 뛸 보다 정신 슬립 더 많은 경향이 동일한 경우 이렇게 (부정이 이해하기 어렵 것을 발견했다 10).

다문화 환경에서 코딩하는 경우에는 동일한 문화권과 언어가 해당 언어에 네이티브 네거티브가 없음을 고려해야 할 수도 있습니다. 따라서 부정의 개념은 외계인입니다 숙련 된 프로그래머조차도 때로는 코드를 빠르게 탐색 할 때 놓칠 수있는 기능입니다. 그러나 이것은 고려해야 할 사항 일 수도 있고 아닐 수도 있습니다.