Wpis z mikrobloga

Mam takiego helpera:

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
  • 8
@kot1401:

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
@kot1401: jeszcze taka uwaga do twojego kodu komentarze też pisz po angielsku raczej

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ż...