• 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

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
1,401 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,967 wizyt
0 głosów
2 odpowiedzi 1,054 wizyt
0 głosów
1 odpowiedź 790 wizyt
pytanie zadane 8 stycznia 2017 w Java przez theochse Obywatel (1,310 p.)

93,174 zapytań

142,185 odpowiedzi

321,974 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1389p. - dia-Chann
  2. 1368p. - Łukasz Piwowar
  3. 1360p. - CC PL
  4. 1360p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...