Przelicznik miar w Javie

0

Cześć,
pytałem już wcześniej o code review w tym wątku. Poprawiłem/dopisałem rzeczy wypunktowane przez @Shalom i @artur52. Co do javadoc, na które uwagę zwrócił @jarekczek, to nie bardzo wiem jak powinno to wyglądać, więc jeszcze nie commitowałem tego na gita.
Czy taki opis zmiennej będzie poprawny?

    /**
     * convertValue is quantity of this unit in specific main unit f.e. meters or kilograms
     */
    private double convertValue;

A tak zacząłem opisywać metodę convertTo:

    /**
     * This method convert one unit to new,
     * @param quantity of unit which will be converted
     * @param newUnit is a unit to convert to
     * @return a double witch is value of new unit after conversion
     */
    double convertTo(double quantity, Unit newUnit){
        double value;
        value = quantity * this.convertValue * (1/newUnit.convertValue);
        return value;
    }

Moglibyście zerknąć czy lepiej teraz to wygląda i wytknąć te najgorsze błędy, zwracając uwagę na logikę i konwencję? Może też macie jakieś podpowiedzi jak to odrobinę rozwinąć?
Ale powoli zaczynam myśleć też nad jakimś większym projektem, w którym będę mógł nauczyć się czegoś nowego.
Może od razu zapytam czy nie macie już zbędnych książek, które pozwoliłyby mi usystematyzować podstawową wiedzę z Javy? Raczej nie stać mnie na zakup nowych a z bibliotek powypożyczane wszystko.
Dzięki wielkie każdemu za wszelką pomoc.

LINK DO GITA

0

Hej, tu masz jak pisać JavaDoc
Jeżeli chodzi o systematyzowanie wiedzy to polecam internet - masz wszystko najświeższe, nie to co w 5-letniej książce. (a już w ogóle "Learn the Language" tutaj )
Większy projekt - proszę bardzo tutaj oracle za rączkę krok po kroku pokazuje jak zrobić stronę internetową - jak to ogarniesz to praca murowana.
Ewentualnie Spring - też ma tutoriale, trochę mniej krok po kroku.

0

Napisałem w komentarzu, że javadoc ok. No może z jednym zastrzeżeniem. Javadoc do prywatnego membera nie ujrzy światła dziennego (patrz dokumentacja Javy, tam też nie widzimy prywatnych memberów). Tymczasem znajomość słowa convertValue jest potrzebna użytkownikowi biblioteki, bo występuje w konstruktorze Unit.

Tak więc wygeneruj sobie javadoc w postaci html i wtedy go przeanalizuj. Ktoś patrzący na klasę Unit powinien móc się dowiedzieć, jak użyć konstruktora.

0

Dzięki za dotychczasowe odpowiedzi, gdyby ktoś jeszcze miał jakieś uwagi, będę bardzo za nie wdzięczny. Dziś jeszcze poczytam o JavaDoc a od jutra mam nadzieję, zacznę czytać tutorial Javy EE, żeby zrobić coś większego? Panowie @jarekczek, @Xliwazlimak i @Shalom będę mógł Was oznaczać, jeżeli już coś stworzę i będę chciał zweryfikować czy idę w dobrym kierunku?
Pozdrawiam :)

2
seveir napisał(a):

Dzięki za dotychczasowe odpowiedzi, gdyby ktoś jeszcze miał jakieś uwagi, będę bardzo za nie wdzięczny. Dziś jeszcze poczytam o JavaDoc a od jutra mam nadzieję, zacznę czytać tutorial Javy EE, żeby zrobić coś większego? Panowie @jarekczek, @Xliwazlimak i @Shalom będę mógł Was oznaczać, jeżeli już coś stworzę i będę chciał zweryfikować czy idę w dobrym kierunku?
Pozdrawiam :)

Po co się pytasz, oni i tak całymi dniami siedzą na forum, zawsze pomagają, a jak nie to chociaż wyśmieją xd

0

@seveir: a tak poza tym jak masz tę metodę co wkleiłeś to nie można by po prostu:

 double convertTo(double quantity, Unit newUnit){
  return quantity * this.convertValue * (1/newUnit.convertValue);
}

Tworzenie dodatkowej zmiennej w tym przypadku tylko zaciemnia :(

Poza tym te setowanie list też jest jakieś dziwne. Nie mógłbyś mieć klas, które po prostu zwrócą Ci odpowiednio uzupełnione listy? Kiedy tego potrzebujesz? A nie takie global listy latające po całej klasie :) W ogóle ta główna klasa mogłaby zostać rozbita na sporo mniejszych..

0

Hej,
wprowadziłem trochę większe zmiany w kodzie, m.in. rozbijając główną klasę, która miała koło 170 linijek, pozostawiając 51. Pojawił mi się w związku z tym problem wyjścia z wyboru jednostki. Wcześniej robiłem to przez uruchomienie metody startProgram, jednak teraz jest ona częścią obiektu, a chyba nie chciałbym tworzyć w tamtym miejscu nowego programu.

    private Unit readUnit(List<Unit> unitList){
        int selectedNumber = choiceReader.readChoice(unitList.size());
//        if (selectedNumber == 0) {UnitConverter.startProgram();}
        return unitList.get(selectedNumber-1);
    }

Mam pytanie też o rozłożenie package'ów. Czy tak jak jest aktualnie na githubie jest w porządku?
LINK DO GITHUBA

1 użytkowników online, w tym zalogowanych: 0, gości: 1