Code Review - Wizualizacja Sortowania

Wątek przeniesiony 2024-11-20 23:10 z C/C++ przez flowCRANE.

0

Byłbym wdzięczny, gdyby ktoś mógłby popatrzyć na mój projekt i wskazać ewentualne błedy.
Link do repozytorium

2

@bikog45712: z takich rzeczy które łatwo rzucają się w oczy (chociaż podchodzi to już trochę pod czepialstwo),
użycie define w main.cpp, lepszą opcją byłoby użycie const albo constexpr. 2 sprawa to możnaby rozdzielić prezentacje i implementację w klasie filler, chociaż zawiera tylko 1 metodę to z reguły dłuższe metody daje się do .cpp a w pliku nagłówkowym zostawia tylko krótkie i rozwijane (inline) metody.

Reszta, jeżeli wszystko działa prawidłowo wydaje się w porządku.

1

Neźle.

sortAndUpdateUI

Ależ nie kładź żadnych dodatków do funkcji sortowania. Nic o UI nie powinne być tu.
wroć liczniki z funkcji i używaj ich "zewnątrz". (że "sort" nie biędze wiedzić nic o applikacji)

2

Repo:

  • nie wrzuca się plików bin/ (warto dodać do .gitignore), bo zapychają repo i jest mała szansa, że ktoś je będzie w stanie uruchomić
  • brakuje opisu, nie wiadomo jak zbudować apkę i jakie biblioteki są potrzebne (widzę, że SDL jest w użyciu)
  • zawsze warto dodać system do budowania, ale to może być overkill jak nie wiesz jak to robić
1

Kod wygląda ładnie, sam bym pewnie tak samo napisał, bardzo ciężko lepiej by było to zrobić.

Problemy jakie widzę to, brak systemu budowania, sdl i c++ jest multiplatform to jakiś cmake i można budować na linux, windows, mac os.

Drugie nie masz testów, skąd wiadomo, że twój algorytm sortowania działa, a także można jakieś unit testy do innych funkcjonalności dać na wszelki wypadek, jeśli ktoś by coś próbował dodać poprzez kontrybucję to jak testy się wywalą to szybciej to zauważyć.
Też algorytmy trzeba zawsze testować, niby coś prostego, ale jak sprawdzisz brzegowe przypadki to czasem się okaże, że jednak coś jest źle.
Ale nie tylko address sanitizer, memory sanitize czy undefined behavior sanitizer one działają tylko jak masz testy na których mogą być wykorzystane tak one są nieprzydatne bez testów, bo testy zapewniają im runtime róznych drug przejścia programu.

I do Testów jakiś Catch2 czy Google Test, nie wiem czy są jakieś alternatywy inne dobre.

Do budowy myślę cmake tylko, make jest dobry, ale nie odpalisz tego wszędzie.
Windowsowy builder od visuala ma też swoje problemy i jest nie przenośny.

I jeszcze readme na githubie opisu projektu, jak zbudować jest bardzo ubogie powinieneś opisać jak działa, jakąś dokumentację, żeby szło łatwo zainstalować, akurat to prosty projekt, ale zwykle nie każdy wie jak np. zrobić insert module kernel czy dockera odpalić twojego obrazu, przy trudniejszych problemach, akurat dokumentacja jest zważna, bo nawet autor może zapomnieć, samemu mi się zdarza nie wiedzieć jak swoje projekty uruchamiać, chyba że zostawisz jakiś skrypt co zrobi wszystko za ciebie, ale też trzeba to podać w readme, że wystarczy uruchomić ten skrypt i on zbuduje cały projekt i pobierze wszystkie zależności.

Też patrząc z drugiej strony to sam algorytm sortowania mógłby być jakimś interfacem, pod którą można by było dodać dowolną klasę np. z innym algorytmem i łatwo z jednego np. merge sort na quick sort czy heap sort zamienić, a main działałby bez normalnie gdyż wszystkie miały by taki sam interface, wykorzystywany w funkcji main, łatwiej by było rozszerzać wizualizację o nowe algorytmy.
Rozszerzenie takiego programu by wymagało tylko dopisania algorytmu nowego, a nie przebudowy całego maina.

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.