Konrad
Mruk
Młodszy programista
Java
Temat: Nested if spaghetti
Mam prosty case prowadzący do zabawnego rezultatu.W skrypciku na mojej astro stronce podmieniam wartość fazy Księżyca na zdefiniowaną literę.
Well, rozrysowanych stanów fazy jest 28 i tyleż mam możliwych odpowiedzi. Pierwsze podejście za pomocą operatora warunkowego wyglada tak:
<?php
/**
*
*/
class MoonPhaseChar {
public static function getMoonPhaseChar($val){
$out = '0';
$out = ($val < 1/28.0) ? '0':
(($val < 2/28.0) ? 'A':
(($val < 3/28.0) ? 'B':
(($val < 4/28.0) ? 'C':
(($val < 5/28.0) ? 'D':
(($val < 6/28.0) ? 'E':
(($val < 7/28.0) ? 'F':
(($val < 8/28.0) ? 'G':
(($val < 9/28.0) ? 'H':
(($val < 10/28.0) ? 'I':
(($val < 11/28.0) ? 'J':
(($val < 12/28.0) ? 'K':
(($val < 13/28.0) ? 'L':
(($val < 14/28.0) ? 'M':
(($val < 15/28.0) ? 'N':
(($val < 16/28.0) ? 'O':
(($val < 17/28.0) ? 'P':
(($val < 18/28.0) ? 'Q':
(($val < 19/28.0) ? 'R':
(($val < 20/28.0) ? 'S':
(($val < 21/28.0) ? 'T':
(($val < 22/28.0) ? 'U':
(($val < 23/28.0) ? 'V':
(($val < 24/28.0) ? 'W':
(($val < 25/28.0) ? 'X':
(($val < 26/28.0) ? 'Y':
(($val < 27/28.0) ? 'Z':
'1')))))))))))))))))))))))))) ;
return $out;
}
}
?>
Wszystko działa, ale dwie rzeczy nie dają mi spokoju:
- natury estetycznej: mnie jako Javowca urzekła ta nieprzeliczalna ilość nawiasów, więc czy da się to zrobić bez nich?
- natury wydajnościowej: czy taki stos warunków jest ok, czy takie sytuacje rozwiązuje się inaczej (switch-case-break)?