//Screeny i program w formacie exe w załączniku.
Zacząłem się uczyć Javy na początku wakacji 2014 i mniej więcej w październiku / grudniu zacząłem pisać swój projekt, żeby uporządkować wiedzę. Czytałem, że najlepiej jest zrobić coś, co byłoby przydatne dla samego piszącego. Pewnego razu napisał do mnie kolega i zaproponował coś, mianowicie generator armii do gry figurkowej Afterglow (mam nadzieję, że nie zostanie to potraktowane jako reklama, chcę po prostu objaśnić o co chodzi), zachowując odpowiednie zasady (http://afterglowthegame.com/index.php/pl/zasady). W programie możemy wybrać frakcję (aktualnie tylko jedna dostępna), postacie, dokupić im eq i skille i sprawdzić całkowity koszt oraz ewentualne nieprawidłowości. Niestety nie zdążyłem zaimplementować póki co zapisu i wczytywania (czyli w sumie czegoś najbardziej pożytecznego), ale może kiedyś... Napotykałem się z masą błędów, problemów itp., które jakoś rozwiązywałem czy obchodziłem (niekiedy z Waszą pomocą :)). Jako że jestem w maturalnej klasie, to musiałem poświęcić często czas na coś innego, więc przerwy trwały nawet 1-2 miesiące, ale w końcu się udało.
Jak patrzę teraz na to, to widzę słaby layout, marny kod (który starałem się często poprawiać, szczególnie po kilku pierwszych stronach 'Czystego Kodu') i ogólnie lekki syf, ale jestem mega zadowolony, że zrobiłem coś co po prostu działa i nauczyłem się przy tym wielu podstawowych rzeczy.
https://github.com/Naitoreivun/AfterglowArmyGenerator - tutaj link do repo; w folderze Generator znajduje się główna klasa odpalająca
Proszę o konstruktywną krytykę, chyba że ktoś miał zły dzień i widząc 'to coś' chce się po prostu wyżyć. Przy okazji mam kilka pytań i rzeczy do omówienia, które pojawiły się w trakcie pisania:
O:
- Jakbym teraz miał się za to zabrać, to pewnie zrobiłbym to bardziej w rodzaju programu, który pozwala stworzyć armię, czyli robimy ludzika, nadajemy mu nazwę, rangę i możliwości co może kupić a czego nie itp itp.
- Myślałem żeby użyć dekoratora (Zasoby i projektowanie klas) ale jednak nie byłem wprawiony i bałem się użyć czegoś, w czym mógłbym się zaplątać, a mimo wszystko mój projekt nie jest bardzo mały, więc wolałem nie ryzykować.
//Program docelowo robiony dla osób, które znają zasady i świat gry.
Q:
- serialVersionUID - po co to tak naprawdę? cały czas mi wyskakiwał warrning w eclipsie i w końcu dodałem to, co wymagał w wielu klasach
- jeden package czy więcej, dla rozdzielenia różnych rzeczy od siebie?
- Starałem się robić przy użyciu MVC i chyba wyszło mi takie kulawe MV... W jednych klasach trzymałem i modyfikowałem dane, a w innych wyświetlałem, ale... No właśnie, jak to powinno wyglądać żeby jeszcze 'C' doszło?
- Załóżmy że wszystko spakuje do jara albo potem na exeka przerobie. Jak mogę edytować w tym czymś pliki? Np.: pobieram opisy broni z pliku txt załączonym do projektu. Jak dodać nową linijkę z opisem nowej broni? Czy w takim przypadku używa się po prostu baz danych?
- Mam klasę Proroka, który rozszerza klasę Bohatera i rzeczywiście jest on bohaterem mając przy tym więcej funkcji. Ale mam też klasę bodajże Piechura który rozszerza klasę Jednostki Podstawowej, ale niczym on się nie różni, klasa jest praktycznie pusta, zrobiłem ją tylko po to, aby wyglądało to "ładniej". Czy to ma sens? (https://github.com/Naitoreivun/AfterglowArmyGenerator/blob/master/Generator%20Armii%20Afterglow/src/models/DelarianFootmanModel.java)
- Tutaj: https://github.com/Naitoreivun/AfterglowArmyGenerator/blob/master/Generator%20Armii%20Afterglow/src/generator/GeneratorFrame.java od linijki 668 do 711 tworzę wybraną przez użytkownika postać za pomocą switch / case. Dostaję nazwę i tworzę odpowiednią klasę. Jest to brzydkie, ale nic innego nie przyszło mi do głowy. Jakieś pomysły?
- Moja główna klasa ma około 900 linii. To dużo czy nie? Starałem się wszystko dzielić na metody. Wykonuję w niej rzeczy, które się nie powtarzają, tak więc nie wiedziałem czy dzielić to jeszcze osobno na jakieś klasy, które tylko coś inicjują, że tak to ujmę. Jak to powinno wyglądać?
Przy okazji mam kilka dodatkowych pytań: co dalej? Zakładając, że chciałbym pracować jako backendowiec.
Myślałem nad (w kolejności):
- HTML + CSS + JS, ale totalne podstawy, żeby wiedzieć z czym to się je.
- JDBC, bazy danych, Hibernate
- Sockety + wielowątkowość
- Spring
Co o tym myślicie?
Z góry dziękuje za rady, opinie i poświęcony czas.