중첩 된 IF 문이 너무 많아서 속도, 크기 및 가독성을 최적화하는 방법에 대한 제안이 있으면 궁금합니다.많은 IF 문 최적화
다음은 if 문 중 하나와 해당 중첩 문을 보여주는 예제입니다. 이 문서에는 약 25-30 가지가있을 것입니다.
if($row["inlet_moisture"] > $row["inlet_moisture_high_warning"]) {
if($row["inlet_moisture"] > $row["inlet_moisture_high_critical"]) {
if($row["inlet_high_critical"] == 0) {
if($row["email_notification"] == 1) {
}
if($row["mobile_notification"] == 1) {
}
}
} else {
if($row["inlet_high_warning"] == 0) {
if($row["email_notification"] == 1) {
}
if($row["mobile_notification"] == 1) {
}
}
}
} else if($row["inlet_moisture"] < $row["inlet_moisture_low_warning"]) {
if($row["inlet_moisture"] < $row["inlet_moisture_low_critical"]) {
if($row["inlet_low_critical"] == 0) {
if($row["email_notification"] == 1) {
}
if($row["mobile_notification"] == 1) {
}
}
} else {
if($row["inlet_low_warning"] == 0) {
if($row["email_notification"] == 1) {
}
if($row["mobile_notification"] == 1) {
}
}
}
}
아이디어는; 나는 을 읽는 (temp/speed/moisture)이고, 만약 내가 그것이 맞는지를 확인해야한다면, 어떤 한계 (high warning/high critical/low warning/low critical)를 치는지 점검 할 필요가있다. 이미 경고를 보냈습니다. 알람이 전송되지 않은 경우 사용자가 알람 알림 (모바일/이메일/모두)을 요청했는지 확인해야합니다.
현재이 기능이 작동합니다. 나는 얼마나 무거워서 싫어하나요? 이 문제를 개선 할 수 있습니까?
감사합니다.
가장 먼저하는 일이다 선호하는 것, 예를 들어, '$ inlet_moisture = $ row [ "inlet_moisture"]'등등. 이 과정에서 나는 모든 곳에서'== 1'을 명시 적으로 검사 할 필요가 없도록'boolean'으로 변환 할 것입니다. –
@Oli, 실적에 영향을 미칩니 까? 또한, 값은 내 DB에 boolean으로 저장되지만, MySQL은 부울 값에 대해 0과 1을 반환합니다. 나는'$ email_notification = $ row [ "email_notification"] == 1일까요? true : false;' – rlemon
이것은 성능에 거의 영향을 미치지 않는다고 생각합니다 (확인을 위해 프로파일 링해야하지만). 또한, 당신은'? true : false'. –