Po pierwsze: starałem się google, ale przede wszystkim znalazłem tylko dyskusje o tym, jak zdefiniować tablice w stałych i innych niepowiązanych informacji.Klasy PHP zawierające tylko stałe
Mam pytanie dotyczące rozwiązania, które sprawi, że mój kod będzie bardziej czytelny (i piękny), który właśnie mi się przydarzył. Zasadniczo mam większość funkcji zwracających kod statusu, który wskazuje na sukces lub, jeśli coś poszło nie tak, kod błędu. Do tego zrobiłem klasy o nazwie „StatusCode”, która zawiera tylko stałe, tak jak:
<?php
class StatusCode {
const success = 0;
const badArgument = -1;
const badQuery = -2;
const outOfMana = -3; //Really just for demonstration purposes
...
}
Celem jest, aby magiczne numery zniknąć z mojego kodu i jasno, co poszło nie tak, bez konieczności szukać wyjaśnienie gdzieś:
if (mana > 10) {
//Do some magic
return StatusCode::success;
}
else {
//Oh god this is not good!
return StatusCode::outOfMana;
}
Powinno również wyeliminować możliwość przypadkowego użycia duplikatów kodów błędów. Jestem prawie pewien, że doda to niewielki narzut do mojej aplikacji, ale w zamian uczynił mój kod łatwiejszy do zrozumienia. Czy istnieje jakiś powód do wstrząsania ziemią, aby tego nie robić? Może jeszcze lepszy sposób na zrobienie tego?
(mam unikać podejścia define(CONSTANT, "value")
ponieważ wydaje się mniej ładna i jest to uciążliwe pisać na mój niemiecki klawiaturze :))
Nie ma powodu, dla którego NIE robić tego, co zrobiłeś. Jak powiedziałeś, sprawia, że twój kod jest bardziej czytelny. Jeśli chodzi o dodawanie narzutów, nawet jeśli jest to prawda, jest to całkowicie minimalny koszt. Jeśli chodzi o lepsze sposoby, istnieją różnice w tym, co zrobiłeś, używając interfejsów do definiowania stałych. TL; DR - to, co zrobiłeś, jest dobre. –
Całkowicie zgadzam się z tym, co @ N.B. powiedziany. Mój jedyny problem z tym postem polega na tym, że powinien on być zakończony sprawdzeniem kodu, a nie tutaj;) – Prisoner
W tym małym zakątku stylu kodowania twój wybór jest absolutnie najlepszy.A mówiąc o stylu, bardzo często nie mówi się "absolutnie najlepiej". ;-) BTW, możesz chcieć uczynić tę klasę 'abstract' lub' final' jako dodatkową wskazówkę, jak to nie powinno być używane. Niestety nie może to być jedno i drugie, które zamknęłoby umowę. – Jon