이중 if 문
본문
function coloringixwi($valll){
$colorsett = '';
$colorl = strlen($valll);
if ($colorl>10) {
if (strpos($valll,'car')||strpos($valll,'bycle')) {
$colorsett = 'bad';
}
} else {
if ($valll!=1000&&$valll!=1) {
$colorsett = 'good';
}
}
return $colorsett;
}
if 문이 이중으로 있는데 좀 보기가 그래서요.
이럴때는 어떻게 해야 하나요?
이게 최선인가요??
코드 리뷰해주실분..
!-->답변 5
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);
...
if ($colorl > 10 && (strpos($valll,'car')||strpos($valll,'bycle'))) {
$colorsett = 'bad';
}
else if ($color1 <= 10 && ($valll!=1000&&$valll!=1)) {
$colorsett = 'good';
}
...
위에 플래토님이 잘 답변해주셧는데요.
if($colorl>10) 이렇게 쓰는것 보다는
if(10<$colorl) 이렇게 쓰는 것이 더 좋습니다.
왜냐하면 보통 수학에서 10 < 20 <30 이렇게 대소비교를 하기 때문에
if(10<$colorl) 이렇게 쓰는 것이 더 직관적이고
사회적 통념에 맞게끔 작성된 것이기 때문에 가독성이 더 좋기 때문입니다.
원 코드로 사용하는 게 가장 좋습니다.
이중 if 문을 무리하게 줄이면, 가독성이 떨어지게 됩니다.
저같은 경우 if문이 한줄인 경우 { } 는 생략하고 이렇게 씁니다
if ($colorl>10 && (strpos($valll,'car') !==false || strpos($valll,'bycle') !==false) ) $colorsett = 'bad';
else if ($colorl<=10 && $valll !=1000 && $valll !=1) $colorsett = 'good';
답변을 작성하시기 전에 로그인 해주세요.