Projekt: Tworzymy własną grę – Po konsultacji :)

Pierwsza część projektu             Poprzednia część projektu      

Dzisiaj tylko krótka informacja techniczna: Kod projektu został rzucony na pastwę zawodowców, co oczywiście obnażyło jego słabe strony.

Po konsultacji

z rewelacyjną ekipą Cpp Polska kod gry jest w trakcie zamieszczania często dość istotnych zmian. Z jednej strony jest co poprawiać, ale to także świetny kawałek nauki. Poniżej umieszczam listę zaleconych poprawek, nad którymi pracuje, natomiast mam nadzieję, do tygodnia pojawi się pierwsza część Projekt: Tworzymy własną grę – refactoring/poprawki. Natomiast krótka przerwa jest potrzebna, na to, żebym mógł zapoznać się z kilkoma kwestiami zawartymi w uwagach do kodu i je ciut przećwiczyć. 

Uwagi do kodu: 

1. Za dużo komentarzy. Poleciłbym Ci lepsze nazewnictwo kosztem mniejszej ilości komentarzy.
2. Mam wrazenie, ze sporo ifow moglbys zamienic na switche.
W logikę nie chcę się wtrącać, bo nie znam modelu projektu.

Main.cpp
9 – w nowym c++ powinno używać się std::random_device do generowania ziarna. Tutaj więcej szczegółów: http://en.cppreference.com/w/cpp/numeric/random
17 – musisz popracować nad nazewnictwem, w linii 35 masz „endGame = startGame” ….
27 – nie potrzebujesz dwuwymiarowej dynamicznej tablicy. Znasz rozmiar w czasie kompilacji, możesz użyć std::array
32 – memory leak. Nie usuwasz pamięci po stworzeniu obiektu. Nie potrzebujesz dynamicznej alokacji, możesz stworzyć Player na stosie.
Da się uniknąć wszystkich new/delete w tym pliku

Player.h
dużo magicznych wartości, możesz zrobić klasy wyliczeniowe „enum class”

Player.cpp
9 – domyślny konstruktor tylko po to, żeby wypisać błąd. Nie potrzebujesz domyślnego konstruktora
16 – membery class możesz zainicjalizować w pliku .hpp
58 – gameOver?:)
63 – aż się prosi o switch/case i enum class

ScoreBoard.h
8 – możesz użyć std::array

ScoreBoard.cpp
25 – używaj algorytmów z std::algorithm, w szczególności std::sort (który również działa na tablicach)
52 – uchwyt do pliku jest automatycznie zamykany w destruktorze. I robisz close() nawet jak się nie uda otworzyć pliku
57 – użytkownika chyba nie interesuje czy plik istniał czy nie, jak jest pierwszy na pewno będzie o tym wiedział
60 – Nie potrzebujesz takich sprytnych algorytmów. Potrzebujesz użyć dobrej struktury danych. Użyj std::set, który jest posortowany (std::map jak będziesz chciał dodać nazwy), będziesz mógł łatwo wstawiać elementy
Może warto dodać do klasy nazwę użytkownika, nie tylko najlepszy wynik?

Ogólnie
Sformatuj kod clang-formatem, bardzo ciężko się czyta.
Nie masz żadnych testów, a to bardzo niedobrze 🙂

Tak więc czekają mnie dwie linie artykułów: będą to 2-3 artykuły związane z poprawkami do kodu oraz zupełnie osobna cześć bloga, czyli testy jednostkowe. Tak więc zaraz po majowym długim weekendzie będzie się sporo działo.

Na zakończenie wpisu, chcę bardzo podziękować ekipie z CPP Polska, a szczególnie osobą, które poświęciły bezinteresownie swój czas na code review – Jesteście wielcy!!! 🙂 

 

Jedna myśl na temat “Projekt: Tworzymy własną grę – Po konsultacji :)

    Dodaj komentarz