Jako sysadmin, kończę wykonywanie prostych programów ad-hoc co jakiś czas. Próbuję się uczyć, kiedy idę dalej, więc ogólnie rzecz biorąc, czy jest coś w poniższym kodzie, które wyskakuje na ciebie jako zła praktyka lub w inny sposób niepotrzebny?Unikanie duplikatu kodu (PHP)
W szczególności 3 instrukcje if na końcu wydają się niepotrzebnie duplikować kod. Czy istnieje sposób, aby skrócić to jeszcze bardziej, nie przesadzając ze złożonością?
<?php
define('TAKEN', 'Match: One');
define('AVAIL', 'Match: No Matches');
define('DATAMINE', 'Data mining count exceeded');
$ch = curl_init("http://co.za/cgi-bin/whois.sh?Domain=example");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
function search_whois($findit) {
global $output;
if (strpos($output, $findit) === false)
return false;
if (is_int(strpos($output, $findit)))
return true;
}
if (search_whois(TAKEN))
echo "Domain is taken.\n";
if (search_whois(AVAIL))
echo "Domain is available.\n";
if (search_whois(DATAMINE))
echo "Blocked for datamining, try again later.\n";
// var_dump($output);
?>
Uwielbiam patrzeć deweloperzy faktycznie chcąc poprawić swój kod i chce zrobić wszystko poprawnie. Dam ci za to +1! Ponieważ jest późne popołudnie w piątek, prawdopodobnie nie jestem odpowiednią osobą do zatwierdzenia kodu innej osoby w tej chwili. Jednak nie widzę niczego wyraźnie nie tak. Jeśli ostatnie trzy, jeśli są wzajemnie wykluczające, możesz użyć, jeśli-else, jeśli zamiast tego, ale to jest dziurawienie. – kskjon
Jak wspomniano w komentarzu powyżej wszystkie 3 IF zostaną uruchomione, jeśli jest to pożądane, wtedy twój kod jest w porządku, jeśli zamiast tego chcesz zakończyć/wyjść po każdym z nich, lub tylko pozwolić, aby jeden z nich był uruchomiony, użyj, jeśli/elseif/else etc ... –
Jedyne, co mogę zrobić inaczej to zrobić klasę zamiast po prostu używać funkcji, więc nie musisz używać 'global $ output'. Poza tym, myślę, że jesteś całkiem solidny. – tplaner