Ocena kodu, konwencji, rozwiązań

0

Nigdy nie pisałem w c++, (normalnie java) i tam nie ma takich rzeczy jak header files *.h czy namespacy (takie jak w c++) i nie wiem czy poprawnie napisałem swój kod. Zrobiłem go na rozgrzewkę ale nie wiem czy poprawnie rozdzieliłem *.cpp oraz *.h ani czy nie powstawiałem za dużo namespaców do jednego plku i inne takie tam.

Prosiłbym kogoś kto siedzi w c++ i wie jak się organizuje kod o jakieś rady, uwagi.

0

To co mi się rzuciło

https://github.com/PleaseDontKillMe/ExampleQuizGame/blob/master/Wiesielec/Utils.cpp#L33
jak funkcja jest w tym samym namespace to nie trzeba go pisać przed. (Chyba, że jest to dobra praktyka o której nie wiem to fajnie jak mnie ktoś poprawi (: )

https://github.com/PleaseDontKillMe/ExampleQuizGame/blob/master/Wiesielec/Utils.cpp#L64
tego nie powinno być

https://github.com/PleaseDontKillMe/ExampleQuizGame/blob/master/Wiesielec/Utils.cpp#L86
a to powinno być #ifdefowane tak jak to zrobiłeś ze sleep()

https://github.com/PleaseDontKillMe/ExampleQuizGame/blob/master/Wiesielec/Quiz.cpp#L5
lipa robić takie coś globalnie, std nie jest długie ;)

Tam gdzie nie musisz mieć liczb ujemnych używaj size_t

Co do samej organizacji kodu, nie podpowiem bo sam mam z tym problemy. Ale według mnie nie powinno się wrzucać tylu namespaców do jednego pliku

2

Jedna złota zasada, która w javie też występuje: nigdy nie twórz wajcha-kodu.
Wajcha-pół kodu, wajcha-drugie pół. Jeżeli coś jest znane w czasie kompilacji to niech takie pozostanie.

Nie wrzucaj żadnych solucji, bo dla wszystkich osób, które nie używają twojego środowiska jest to bezużyteczne, a zajedziesz się tworząc je dla wszystkich ide. Wrzuć nagłówki do folderu jednego (np include), źródła do drugiego (no. src) i pod całość podepnij cmakelists.

Nie ma potrzeby scalania plików. W prostej nazistowskiej wersji: jeden folder, jedna przestrzeń nazw, jedna klasa, jeden plik.

Tak długo, jak nie bawisz się w skomplikowane żonglowanie vtable możesz darować sobie wydzielanie inicjalizacji do jakiejs metody init.

Nigdy- szczególnie w obiektach - nie przechowuj tablic jako wskaźniki! Jeden raz się zapomnisz, jedno skopiowanie obiektu i wyciek. Nie wiesz ile bedzie elementow? Uzyj odpowiedniej kolekcji.

Nie potrzebujesz nic od konstruktora czy destruktora? Zostaw je w spokoju! Kompilator sam je wygeneruje, oszczędź palce i oczy.

Nie próbuj robić wrapperów, które będą udawać javowy standard. Nie baw sie we własnego filereadera z tym obrzydliwym zwracaniem nieokreślonej liczby elementów w postaci wskaźnika, tylko co najwyżej zrób sobi helper function, które wepchnie Ci wszystko do podanego kontenera majac outputiteratora.

Nie rób jakieś math::randomy, od tego masz odpowiednie dystrybucje w <random>.

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