문제

나는 많은 if-else 진술, 특히 다른 경우에 중첩 된 많은 If-Else 진술이 있음을 발견했습니다.이 진술은 내 코드를 읽기 쉽게 만듭니다. PHP의 다른 명령문을 줄이는 방법은 무엇입니까?

내 팁은 다음과 같습니다. 1. 스위치 명령문이 적합한 경우 스위치 문을 사용하십시오. 2. exit () 명령문이 가능할 때 사용하십시오. 3. 실현 가능할 때 제 3 진술을 사용하십시오.

다른 진술, 특히 중첩 된 if-else 문을 줄일 수있는 다른 팁이 있습니까?

도움이 되었습니까?

해결책

코드를 소규모 작업 단위로 리팩토링하십시오. 너무 많은 조건부 로직은 코드 스 셀이며 일반적으로 기능을 리팩토링해야 함을 나타냅니다.

다른 팁

둥지 깊이를 줄이기 위해 가능한 경우 "조기 반환"을 사용하십시오. 부울 표현 평가를 사용하십시오.

예시:

function foo($param)
{
    $ret = false;

    if(userIsLoggedIn()) {
        if(is_array($param)) {
            if($param['count'] > 0) {
                $ret = true;
            }
            else {
                $ret = false;
            }
        }        
    }

    return $ret;
}

다음과 같이 다시 작성할 수 있습니다.

function foo($param) 
{
    if(!userIsLoggedIn()) return false;
    if(!is_array($param)) return false;
    return $param['count'] > 0;
}

공식 학업 방법이 있습니다. if 조건, 호출 Karnaugh 매핑.

여러 테스트 조건이 필요하며 단순화 된 생성을 돕기 위해 노력합니다. if 필요한 모든 사례를 다루는 진술.

Wiki에서 그것에 대해 더 많이 배울 수 있습니다 여기.

3 대 연산자를 사용하고 코드를 리팩터링하고 다른 명령문이 필요한 모든 작업을 수행하는 함수 또는 클래스를 작성하십시오.

다형성은 몇 가지를 제거 할 수 있습니다.

나는 진화하는 비즈니스 논리로 가득 찬 많은 코드 작업을하고 있으며 격일로 수정해야합니다. 수정 사항을 유지하는 데 확실히 도움이되는 두 가지 팁은 다음과 같습니다. 가능한 한 빨리 다른 모든 진술을 피하고 반품/종료하십시오. 깊은 둥지에 들어 가지 마십시오 -> 하위 루틴/기능을 만듭니다.

명령문이 부정적인 것으로 바꾸면 코드가 상단에서 하단을 훨씬 쉽게 읽을 수 있습니다 (Condtion의 근접성 및 코드 블록) :

# business logic block
if ( $condition ) {
    # do something
    # code code code
} else {
    # code code code
    return;
}

# refactored:
if ( ! $contition ) {
    # code code code
    return;
}
if ( $condition ) {
    # code code code 
}

둘째, 가능한 빨리 반환/종료하십시오. 물론 내 의견이지만, 일단 서브 루틴의 결과를 이미 결정한 후에, 특히 코드를 위로 아래로 읽으려고 할 때 추가 조건/테스트를 진행하는 요점은 보이지 않습니다. 모든 모호성을 제거하면 상황이 더 간단 해집니다.

결론적으로, 나는 특히 BL의 긴 목록에서 다른 사용을 피하고 싶습니다. 결과를 알 자마자 반환하십시오. 둥지 레벨이 2 이상인 경우 하위 루틴/기능을 작성하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top