Aktywne Wpisy
jedna_odpowiedz +102
#rolnikszukazony Czyli viWaldi zawiózł Annę na randkę, zaparkował w pobliżu stolika z winem i jedzeniem, pogadał z nią w samochodzie o tym, czy Ewka chce miec jeszcze dzieci, po czym odwiózł ją do domu, żeby się mogła spakować? XD To była chyba najlepsza randka w historii programu XD
![jmuhha](https://wykop.pl/cdn/c0834752/9dc031852afc3f36a7321eca44c8536b774871001e4ad40d1656f540126e7fea,q60.jpg)
jmuhha +28
function flight_duration($speed, $distance)
{//Obliczamy czas lotu
if(! is_int($distance) OR ! is_int($speed)) throw new InvalidArgumentException;
$cruise_duration = round($distance / ($speed / 3600));//Przelot na wys. przelotowej
$departure_duration = 1200;//Start i wznoszenie zajmują dodatkowy czas
$landing_duration = 1200;//lądowanie też...
return $departure_duration + $cruise_duration + $landing_duration; //w sekundach
}
Chciałbym zrefaktoryzować ten spaghetti code i przenieść zmienne $departureduration i $landing_duration do jakiegoś pliku konfiguracyjnego (np. config/game.php)
Teraz pytanie, jak się odwoływać do dwóch tych zmiennych, żeby funkcja działała w izolacji podczas testów jednostkowych?
#php #laravel #webdev #programowanie
Zrob z tego klase i wstrzykuj konfiguracje.
values that never change. BEST PRACTICE: Use constants to define configuration options that rarely change."
źródło: Symfony2 best practices. http://symfony.com/doc/download-best-practices-book/
ogólnie jeżeli czegoś nie planujesz zmieniać to nie rób z tego zmiennej konfiguracyjnej na zapas w myśl zasady że przedwczesna optymalizacja jest źródłem zła
http://pastebin.com/ANUJkV9T
to akurat używa zmiennych konfiguracyjnych ale równie dobrze można się ich pozbyć i zrobić je jako stałe klasowe w klasie FlightDuration
w takim przykładzie jak zaproponowałem zmiana sposobu kalkulowania nie zmieni Ci wywołań kalkulowania więc to nie jest problem, wiec różne zmiany w kalkulowaniu trwania
nie każda linijka musi mieć komentarz + nie komentuj oczywistych rzeczy, takie coś doprowadzi do tego że nikt komentarzy nie będzie czytał bo zwykle nic ważnego tam nie będzie, i idąc za ciosem zignoruje coś ważnego.
np.$landing_duration = 1200;//lądowanie też...