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
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 klasieControler
. - Niepotrzebnie rozwlekłe konstrukcje, np.
zamiast po prostuif((tab.getSelectionModel().getSelectedItem().getId().equals("rdTab"))){ return true; } return false;
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 podtableview
? - Cały projekt w jednym commicie o rozbrajającej nazwie "Add files via upload" - czyli de facto niekorzystanie z systemu kontroli wersji.
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ć :)
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 :)