Bardzo proszę o konstruktywną krytykę kodu, nie chodzi mi tutaj o frontend, tylko o sam kod, strukturę plików itd:
http://progwise.blogspot.com/2017/01/symulator-lotto.html
Pod koniec wpisu są linki do GitHuba i pliku wykonawczego.
Za wszelkie uwago będę bardzo wdzięczny.
Przede wszystkim sugerowałbym przejrzenie innych postów tego typu - przejrzenie kodu innych początkujących programistów i wyciągnięcie wniosków. Pierwsza rzecz jaka mi się na myśl nasuwa - nie używaj polskiego nazewnictwa. Struktura plików jakoś też mi średnio pasuje - praktycznie każda funkcja jest rozbita na oddzielny plik. Nie pisze wcale w c++ - ale funkcje do wyświetlania umieść w jednym pliku jak coś (jakiś np. view.cpp), funkcje generujące dane w jakimś model.cpp, a obsługę poleceń od użytkownika (podawanie danych itp itd) w controller.cpp. Może to nie będzie poprawny tok programowania w c++, ale przynajmniej jakoś to zgrupujesz.
- Main za duzy. Main powinien posiadac jakies 3 linijki
- zakomentowany kod nie ma sensu. Powinienes go usunac
- polskie nazwy zmiennych/funkcji
- endl nie sluzy do nowej linii, od tego jest
'\n'
- czemu list zamiast std::vector?
- nazwa headers.hpp nic nie wnosi. ogolnie nazewnictwo w calym pliku. liczby jakies typu wylosowaneLiczby2
- magic numbers (co to to 27? skad ja mam wiedziec co to oznacza?)
- przekazywanie floata przez referencje mija sie z celem (IMO), za to nie przesylasz referencji do listy co jak najbardziej ma sens
- po co Ci wskaznik na float? myslalem wczesniej ze referencje przekazujesz a Ty przekazujesz adres obiektu i bawisz sie z wskaznikami! W C++ wskaznikow praktycznie sie uzywa (na pewno nie w sposob jaki Ty myslisz). Jestes w stanie wytlumaczyc dlaczego tak zrobiles?
- czyWystepuja.cpp. Czemu tam nie uzyjesz po prostu std::find?
- generujLiczby. powinienes uzywac generowania liczb z C++11 a nie z C
- Pobierz liczby jest za duza funkcja, funkcje powinny byc male i zrozumiale
- pokazTwojeLiczby tragiczne formatowanie
- wynik za duzy
jak zmienisz to co Ci napisalem wyzej to wtedy mozna patrzec na logike ;) Mjusisz poczytac o przekazywaniu przez referencje / kopie / wskaznik bo IMO nie rozumiesz tego jeszcze
- Słyszałeś o programowaniu obiektowym? Wolałbym zobaczyć jakieś klasy i metody, niż porozrzucane po plikach pojedyncze funkcje.
- Nie używaj w kodzie oraz w nazwach plików polskich słów, ponieważ nie każdy zna ten język. W naszej branży przyjęło się używanie w kodzie zwrotów angielskojęzycznych.
- W funkcji "wynik" przekazujesz część argumentów przy użyciu wskaźników, a część przez wartość. Dlaczego? To nie ma sensu. Uważam, że powinieneś jeszcze raz zapoznać się ze sposobami przekazywania argumentów do funkcji.
fasadin napisał(a):
- endl nie sluzy do nowej linii, od tego jest
'\n'
Ano właśnie spotkałem się z różnymi opiniami na ten temat i już sam zgłupiałem.
Dzięki wielkie za odpowiedź. Postaram się wziąć pod uwagę wszystkie sugestie.