Witam.
To jest jedna z moich pierwszych appek w Javie nie licząc jakiś programów na praktyki(...).
Chciałbym abyście ocenili i podpowiedzieli co by można poprawić w kodzie.
W rarze są tylko pliki z rozszerzeniem *.java
dobra wrzuciłem testowo na githuba:
https://github.com/Layflette/Game-of-Life
slowMode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ups = 5.0;
}
});
medMode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ups = 10.0;
}
});
fastMode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ups = 20.0;
}
});
default60.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ups = 60.0;
}
});
uberFast.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ups = 120.0;
}
});
:/
https://github.com/Layflette/Game-of-Life/blob/master/Cell.java
18L: osobiście nie lubie takich if'ów, lepiej dodać klamerki
https://github.com/Layflette/Game-of-Life/blob/master/GameOfLife.java
81L: ja bym dodał klamerki
38L: ta metoda GameOfLife robi za dużo, proponuje refaktoryzacje, podzielenie tego
184L: nie zostawia się e.printStackTrace() w kodzie, użyj logera
tyle na razie
Te for'y od razy mi się skojarzyły.
http://koziolekweb.pl/2011/10/22/ekstremalna-obiektowosc-w-praktyce-%E2%80%93-czesc-1-tylko-jeden-poziom-zaglebienia-na-metode/
Niby kod jako tako wygląda miejscami, a miejscami wygląda jakby pisał to junior. Może się czepiam, ale coś mi tu śmierdzi :D
- MVC.
- Map.java jest zbyt skomplikowane. To powinno być kilka osobnych klas. GameOfLife.java też jest zbyt złożone.
Jest trochę późno i pewnie "nabazgrałem" nieładny kod.
- @niezdecydowany faktycznie to wygląda dziwnie. Teraz dodałem "slider" w menu zastanawiam się, czy nie wrzucić go w całego menuBara a nie w subMenu ale na razie jest w subMenu
- dodane "return status == CellStatus.ALIVE"
Trochę rozdrobniłem te klasy, z obiektówki nie jestem najlepszy to w zasadzie drugi projekt w javie mój.
Link https://github.com/Layflette/Game-of-Life
CellsEvolve.java mogę sie z tobą założyć że każda z tych pętli w evolve() mogła by być osobną metodą...
Poza tym odradzam używanie tablic. Generalnie staraj się używać kolekcji.
Minęło już trochę czasu a nikt nie gani go za tego .join()'a ...