Witam,
Proszę o ocenę kodu obliczającego funkcję kwadratową + testy.
Chciałem aby kod był jak najprostszy w użytkowniu i testowaniu. Proszę o konstruktywną krytykę.
Źródło: https://github.com/mattzalewski/junit-testing-example
W metodzie calculate() w klasie QuadraticFunction metoda calculateDelta() jest wywoływana dwukrotnie w tej samej instrukcji warunkowej. Wydaje mi się, że ładniej byłoby deltę policzyć raz i zapisać do tymczasowej zmiennej. Poza tym zastanawiam się jak zareaguje kod na a=0. Zakłada się, że w równaniu kwadratowym a != 0, ale użytkownik może tego nie wiedzieć.
Wzory na pierwiastki równania są błędne. Jak Ty testowałeś, że nie zauważyłeś błędnych wyników?
Jeżeli oczekujesz danych typu int
, to wypadałoby użytkownika o tym poinformować.
Kod jest zdecydowanie przekombinowany - po co aż 7 klas?
Po co instrukcja importu niestandardowej i niewykorzystywanej klasy
import com.sun.corba.se.spi.orbutil.fsm.Guard;
Liczenie pierwiastków z wykorzystaniem delty niesie za sobą spore błędy wynikające z reprezentacji liczb rzeczywistych. Lepiej użyj wzorów Viete'a, dostaniesz dokładniejsze wyniki.
pingwindyktator napisał(a):
Liczenie pierwiastków z wykorzystaniem delty niesie za sobą spore błędy wynikające z reprezentacji liczb rzeczywistych. Lepiej użyj wzorów Viete'a, dostaniesz dokładniejsze wyniki.
Okej, ale to ma być przykład na zajęcia z JUnit. ;)
bogdans napisał(a):
Wzory na pierwiastki równania są błędne. Jak Ty testowałeś, że nie zauważyłeś błędnych wyników?
Jeżeli oczekujesz danych typuint
, to wypadałoby użytkownika o tym poinformować.
Kod jest zdecydowanie przekombinowany - po co aż 7 klas?
Po co instrukcja importu niestandardowej i niewykorzystywanej klasy
import com.sun.corba.se.spi.orbutil.fsm.Guard;
Ten import mi się zapodział. A dlaczego tyle klas ? Chciałem aby kod był czytelny.
A dlaczego tyle klas ? Chciałem aby kod był czytelny.
A uzyskałeś efekt przeciwny.;)
bogdans napisał(a):
A dlaczego tyle klas ? Chciałem aby kod był czytelny.
A uzyskałeś efekt przeciwny.;)
No bywa. Jeszcze się uczę więc popełniam błędy.
Wzór ma dobry, ale źle zapisał :) Nie miałem problemu z przeczytaniem kodu ze zrozumieniem, imho jest czytelny. Może trochę przekombinowany jak na te zastosowanie, ale generalnie dla mnie ok.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.