Domowa biblioteka - pierwszy projekt Java

0

Cześć,
Od jakiegoś czasu uczę się javy. Zrobiłem ostatnio prosty programy w javafx, służy on do zarządzania domową biblioteką. Program składa się z trzech tabel: książki które planujemy przeczytać, książki które właśnie czytamy oraz książki już przeczytane. Dodatkowo aplikacja zlicza czas w dniach ile zajęło nam przeczytanie książki. Pod względem wyglądu to wiem że wygląda trochę jak kupa :P css'a zacząłem się uczyć dopiero nie dawno.
https://github.com/Aszekk/MyLibrary

1

Nie znam się na web developerce, więc nie ocenię CSS-ów ani doboru praktyk w zakresie JavyFX. Może "tak trzeba".

Wyrywkowo - co razi mnie z punktu widzenia ogólnoprogramistycznego i "czystej" Javy:

  • Absolutny brak testów jednostkowych.
  • Kiepska estetyka - niechlujne formatowanie kodu (nadmiarowe, niekonsekwentne wcięcia, nieuzasadnione bloki pełne pustych linii, podwójne nawiasy zamiast pojedynczych itp.).
  • Słabe nazewnictwo. Np. klasa CountDate (?) z metodą count. Błędy ortograficzne ("controler", "DataBase", "readed").
  • Niepotrzebne puste konstruktory, np. w InsertWindow.
  • Fragmenty kodu powtarzane przez przeklejanie i modyfikację, zamiast wyekstrahowania do sparametryzowanych metod (zob. Controler.removeBook).
  • Brak enkapsulacji - np. database jest publicznym polem w klasie Controler.
  • Niepotrzebnie rozwlekłe konstrukcje, np.
    if((tab.getSelectionModel().getSelectedItem().getId().equals("rdTab"))){
        return true;
    }	  
    return false;
    
    zamiast po prostu
    return tab.getSelectionModel().getSelectedItem().getId().equals("rdTab");
    
  • Nadużywanie pól typu static.
  • Rozdzielenie klas pomiędzy pakiety jest dość podejrzane: np. dlaczego Book jest pod tableview?
  • Cały projekt w jednym commicie o rozbrajającej nazwie "Add files via upload" - czyli de facto niekorzystanie z systemu kontroli wersji.
1

Dzięki wielkie za odpowiedź. Jestem samoukiem więc też nie wiem jakie są dobre nawyki w pisaniu kodu. Oczywiście to nie tłumaczy błędów ortograficznych więc nauka angielskiego przede wszystkim, a przynajmniej sprawdzić w słowniku :) Z gitem prawda, nie używałem do tej pory, wrzuciłem projekt tylko żeby udostępnić na forum. Jeszcze raz dzięki za odp. wiem teraz nad czym popracować :)

0
Aszek napisał(a):

Oczywiście to nie tłumaczy błędów ortograficznych więc nauka angielskiego przede wszystkim, a przynajmniej sprawdzić w słowniku :)

Z czysto technicznego punktu widzenia to oczywiście bez znaczenia. Ale ja używam przykładu z plamą na obrusie. Kiedy przychodzisz do restauracji na wykwintną kolację, a tam obrus jest poplamiony - czy to dowód, że jedzenie będzie niesmaczne? Albo czy koniecznie wynika z tego, że w kuchni jest brudno i się zatrujesz? No, niby nie; teoretycznie jedno z drugim nie powinno mieć nic wspólnego. Ale... :)

Poza tym literówki potrafią rzucić kłody pod nogi jeśli chodzi o nawigację w kodzie. Oczywiście IDE bardzo tę nawigację ułatwiają - dzięki semantycznej indeksacji kodu pozwalają łatwo znaleźć wszystkie odniesienia do wskazanej klasy, itp. Mimo to stare, dobre wyszukiwanie tekstowe wciąż bywa bardzo praktyczne.

I może to być problem, jeśli np. chcemy na szybko zidentyfikować wszystkie miejsca w projekcie, które mają coś wspólnego z uwierzytelnianiem. Szukamy sobie po prostu "authenticate" i wyławiamy - klasy, zmienne, komentarze... Ale klasy AutenticateManager już ci nie wyłapie :)

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