테스트 사이트 - 개발 중인 베타 버전입니다

이중 if 문 채택완료

울라프 5년 전 조회 1,918

</strong></p>

<p> </p>

<p>    function coloringixwi($valll){

        $colorsett = '';

        $colorl = strlen($valll);</p>

<p>        if ($colorl>10) {

            if (strpos($valll,'car')||strpos($valll,'bycle')) {

                $colorsett = 'bad';

            }

        } else {

            if ($valll!=1000&&$valll!=1) {

                $colorsett = 'good';

            }

        }

        return $colorsett;

    }</p>

<p> </p>

<p><strong>

 

if 문이 이중으로 있는데 좀 보기가 그래서요.
이럴때는 어떻게 해야 하나요?

이게 최선인가요??

코드 리뷰해주실분..

댓글을 작성하려면 로그인이 필요합니다.

답변 5개

채택된 답변
+20 포인트
strpos 함수를 사용할때 찾을 단어가 처음에 올경우에는 반환값이 0 이라서 타입비교까지 해야됩니다.

function coloringixwi($valll){
    $colorsett = '';
    $colorl = strlen($valll);
    // 반환위치가 처음이라면 0을 반환함
    $pos = (strpos($valll,'car') !== false || strpos($valll,'bycle') !== false) ? true : false;

    if ($colorl>10 && $pos ) {
        $colorsett = 'bad';
    } else if ($valll!=1000 && $valll!=1){
        $colorsett = 'good';
    }
    return $colorsett;
}
echo coloringixwi('123456789').PHP_EOL;

echo coloringixwi('123456789car').PHP_EOL;
echo coloringixwi('car123456789').PHP_EOL; // 0
echo coloringixwi('12345car6789').PHP_EOL;
echo coloringixwi('123456789bycle').PHP_EOL;
echo coloringixwi('bycle123456789').PHP_EOL; // 0
echo coloringixwi(2);
</pre>

<p>

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

저같은 경우 if문이 한줄인 경우 { } 는 생략하고 이렇게 씁니다

if ($colorl>10 && (strpos($valll,'car') !==false || strpos($valll,'bycle') !==false) ) $colorsett = 'bad';

else if ($colorl<=10 && $valll !=1000 && $valll !=1) $colorsett = 'good';
 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

원 코드로 사용하는 게 가장 좋습니다.

 

이중 if 문을 무리하게 줄이면, 가독성이 떨어지게 됩니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

우주용사

위에 플래토님이 잘 답변해주셧는데요.

 

if($colorl>10) 이렇게 쓰는것 보다는 

 

if(10<$colorl) 이렇게 쓰는 것이 더 좋습니다.

 

왜냐하면 보통 수학에서 10 < 20 <30 이렇게 대소비교를 하기 때문에

 

if(10<$colorl) 이렇게 쓰는 것이 더 직관적이고

 

사회적 통념에 맞게끔 작성된 것이기 때문에 가독성이 더 좋기 때문입니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

플래토
5년 전

</p>

<p>...</p>

<p> </p>

<pre>
<code>    if ($colorl > 10 && (strpos($valll,'car')||strpos($valll,'bycle'))) {
        $colorsett = 'bad';
    }
    else if ($color1 <= 10 &&  ($valll!=1000&&$valll!=1)) {
        $colorsett = 'good';
    }</code></pre>

<p><code>...</code></p>

<p><font face="monospace"><span style="font-size: 11.7px;">
 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인