Wątek przeniesiony 2017-01-09 09:40 z C/C++ przez bogdans.

Prośba o konstruktywną krytykę kodu.

0

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.

0

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.

3
  • 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

1
  1. Słyszałeś o programowaniu obiektowym? Wolałbym zobaczyć jakieś klasy i metody, niż porozrzucane po plikach pojedyncze funkcje.
  2. 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.
  3. 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.
0
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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1