FURA gra w kości

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 55
0

wymyśliłem i zrobiłem taką grę w kości, czekam na opinie i hejty (idealna okazja)
w załączniku instalka

https://github.com/chrzastek/FURA

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1
  • nie comituje sie binarek. takze bin/debug bin/release i publish nie powinny byc w repo
  • magic numbery
  • MainWindow jest za duzo, nie ma klasy ktora obsluguje logike gry. Wszystko sie dzieje w sumie w MainWindow
  • z tego co wiem (moge sie mylic) regionow juz sie nie uzywa. Nie sa po prostu uzyteczne
  • funkcje powinny wykonywac jedna akcje. Tak wiec funkcja CreateAndFillHoFFile jest po prostu zla (bo robi dwie rzeczy). Lepiej ja rozbic na SetupHoFFile() a w tym zrobic Create a pozniej Fill
  • GetRandoms lepiej uzyc tutaj Dictionary i zmapowac dwie kolekcje (wtedy nie bedzie Ci potrzebne to i)
  • GetRoundSum spokojnie mogloby zwracac string (uzywasz tylko w jednym miejscu)
  • a co jezeli gra kobieta? Wtedy komunikaty nie sa poprawne
  • jezeli to wpf to czemu nie bindujesz tylko ciagle robisz toString i dajesz do text? Przeciez to latwo idzie zbindowac.
  • pomieszane polskie z angielskimi nazwami

ogolnie projekt jest maly, ale jest czytelny. Dalbym 6/10 bo czytalo sie to ok.

ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 55
0

-też to gdzieś wyczytałem już później. Usunąłem te foldery
-starałem się unikać magic numberów ale masz rację, wkradł się jeden
-regiony były dla mnie użyteczne do przemieszczania się po kodzie ale pewnie dlatego bo jak sam napisałeś cała logika jest w klasie MainWindow. Co z tym zrobić? Wyodrębnić do osobnej dllki?
-co do funkcji GetRandoms() to po prostu wiedziałem że da się to zrobić inaczej i kuło mnie w oczy to i, ale nic nie wymyśliłem innego... Spróbuje z tym dictionary
-grafika jest w Windows Formsie
-nazwy zmiennych, funkcji, klas i obiektów nie wypadają z przyjętej konwencji C# ale interfejs gry jest po polsku więc to się gryzie. Następny projekt będzie miał angielski interfejs

Dzięki za opinię

no_solution_found
  • Rejestracja: dni
  • Ostatnio: dni
0

Poza tym co kolega wyżej napisał, to bym zmienił tego ifa https://github.com/chrzastek/FURA/blob/master/MainWindow.cs#L216
Odwróciłbym warunek do np takiej postaci:

Kopiuj
 if (hofMembers.Count >= 5 && points < hofMembers.Max.Points) {
  return;
}

i tracimy wg mnie zbędne zagnieżdżenie.

Dodatkowo podzieliłbym na foldery cały projekt. Np okna w oddzielnym folderze, klasy związane z logiką biznesową w oddzielnym itp

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10307
0
  1. można zmienić, jeżeli dla Ciebie to bardziej czytelne
Kopiuj
public int Compare(HoFMember member1, HoFMember member2)
{
    if (member1.Points > member2.Points)
        return -1;
    if (member1.Points < member2.Points)
        return 1;
    else
        return 0;
}

na

Kopiuj
public int Compare(HoFMember member1, HoFMember member2)
{
    return member2.Points - member1.Points;
}

(Jeżeli koniecznie potrzeba liczby 1 oraz -1 to użyj funkcji Math.Sign)

  1. Może moje spaczenie z javy ale ja lubię mieć
Kopiuj
private Random r = new Random();

zapisany tak private static readonly Random random = new Random();

Kopiuj

3. Kurcze szkoda że nie mam visuala pod ręką bo bym Ci to fajnie zrefactorował (a bez IDE trochę strach że coś zepsuje :D) ale ogólnie jedyne co bym zrobił to miejsca w MainWindow takie jak:
linijki 54-62 do nowej metody
linijki 64-72 do nowej metody
linijki 41-74 do nowej metody

4. `buttonPass_Click()` i `odNowaToolStripMenuItem_Click` ma pomieszany widok z logiką. (W jednym miejscu decyduje się co robić oraz np ustawia treść labelkom -> nie ładne)

5. Mógłbyś ogólnie całą logikę dać do innej klasy a widok ewentualnie zostawić w MainWindow. To MainWindow teraz za dużo robi niestety.

6. `ResetDices`, `GetRandoms`, `GetAmountOfUncheckedBoxes`, `CreateAndFillHoFFile`, `SerializeSet`  i `GetRoundSum` ładnie wyglądają! Brawo :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.