• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gra w Kółko i Krzyżyk napisana w Javie

Object Storage Arubacloud
0 głosów
1,344 wizyt
pytanie zadane 6 sierpnia 2016 w Nasze projekty przez baqazan Nowicjusz (230 p.)
Witam, jestem początkującym programistą w języku Java i właśnie stworzyłem swoją pierwszą aplikacje okienkową przy pomocy pakietu Swing - grę w Kółko i Krzyżyk. Chciałbym poprosić bardziej doświadczonych programistów o krytyczny komentarz dotyczący wszystkich aspektów tego programu - co zostało zrobione źle, co mógłbym zrobić lepiej / poprawić, czy kod jest czytelny i opisany właściwymi komentarzami, ew. co zrobiłem dobrze. Załączam link do kodu zamieszczonego na GitHubie. Z góry dziękuję za pomoc.

https://github.com/baqazan/TicTacToe

3 odpowiedzi

+1 głos
odpowiedź 6 sierpnia 2016 przez Porcupine Nałogowiec (31,560 p.)

1) Masz trzy: if, else if, else if, a w nich dokładnie to samo: 

String winner = "Winner:   " + checkWinner();
JOptionPane.showMessageDialog(null, winner);
System.exit(0);

2) 

Zamiast:

checkWinner()=="X"

Powinieneś albo przekształcić swój kod żeby działał na char'ach albo sprawdzać w ten sposób:

checkWinner().equals("X")

3) 
Niepotrzebnie wywołujesz metodę checkWinner() najpierw w warunku if, a później wewnątrz if'a drugi raz. Zamiast tego przed if'em powinieneś przypisać to co checkWinner() zwróciło do jakiejś zmiennej

4) 

if(fields[0].getValue()!=null && fields[0].getValue()==fields[1].getValue() && fields[1].getValue()==fields[2].getValue())

Brzydkie to. Zauważ, że robisz to samo sprawdzenie 9 razy tylko dla różnych indeksów tablicy, zamiast tego mógłbyś stworzyć metodę, która zwarca boolean, a jako argumenty przyjmuje te indeksy tablicy - poprawia czytelność i kod jest krótszy.

5)
Zamiast oznaczać pola, w których żaden z graczy nie udzielił jeszcze odpowiedzi jako null mógłbyś użyć Optional<String> z Javy 8. Ewentualnie pójść o krok dalej i zamiast Stringa stworzyć jakiegość enum'a, który ma w sobie "X" i "O".

6) 
Wiem, że to głównie kwestia gustu i preferencji, ale w Javie przyjęło się, że klamry piszemy tak:

public void method() { 
    // whatever
}

Pewnie bardziej podoba Ci się ten styl, którego używasz, ale jeśli kiedyś będziesz wspólnie pracować nad jakimś projektem z innymi programistami, lub po prostu pracować w firmie jako Java Dev to Cię zjadą za te klamry :) 
 

komentarz 6 sierpnia 2016 przez baqazan Nowicjusz (230 p.)
Dzięki za udzielone rady, przerobiłem według nich kod i faktycznie wygląda dużo czytelniej :)
0 głosów
odpowiedź 6 sierpnia 2016 przez MichuDev Pasjonat (20,300 p.)
  • Klasy umieszczaj w pakietach o pewnych nazwach, a nie w pakiecie domyślnym. To najważniejsza rzecz do zapamiętania! W żadnym profesjonalnie napisanym programie w tym języku nie znajdziesz czegoś takiego.
  • Oddzielaj warstwę prezentacji od logiki, co pomoże pisać tobie większe programy.
–1 głos
odpowiedź 6 sierpnia 2016 przez Kornelia Kobiela Nałogowiec (33,340 p.)
Fajnie, że pracujesz i się rozwijasz. Na pewno głębiej wypowie się ktoś mądrzejszy ode mnie, ale ja też mam kilka uwag. Po pierwsze, dlaczego nie wystawiłeś całego projektu na github. Poczytaj sobie o tym, bo każde IDE pozwala na automatyczne dodanie całego projektu do githuba.

Druga sprawa, to komentarze. Fajnie, że komentujesz swój kod, ale jeszcze lepiej by było, gdybyś nauczył się dokumentować go narzędziem JavaDoc.
komentarz 6 sierpnia 2016 przez MichuDev Pasjonat (20,300 p.)

Druga sprawa, to komentarze. Fajnie, że komentujesz swój kod, ale jeszcze lepiej by było, gdybyś nauczył się dokumentować go narzędziem JavaDoc.

Spoko, ale on nie tworzy publicznego API z którego każdy może korzystać.  Jak tworzy własny projekt to wystarczy mu planowanie i dostarczanie commitów o konkretnej treści. Raczej w takim projekcie by się nie zgubił.

Podsumowując, komentarze JavaDoc są zbędne w małych projektach do nauki. Wyjątkiem jest tu nauka JavaDoc.

Podobne pytania

–1 głos
1 odpowiedź 3,141 wizyt
0 głosów
2 odpowiedzi 881 wizyt
0 głosów
1 odpowiedź 659 wizyt
pytanie zadane 8 stycznia 2017 w Java przez theochse Obywatel (1,310 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...