Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
z.B. prinzipiell Rawpointer statt Smartpointer
Aber raw-pointer sind nicht obsolet. Sie sind super praktisch, wenn ein Objekt ein anderes nur benutzt und garantiert ist, dass das benutze Objekt länger lebt als das benutzende. Was sehr häufig vorkommt.
Der Vorteil daran ist nicht nur, dass raw-pointer keinen Overhead erzeugen, sondern dass die Semantik auch viel klarer wird. Man sieht einfach schon an der Deklaration, wie das Objekt benutzt wird.
Zum Code: Ich werde mal drüber gucken, wenn ich Zeit habe.
Ich habe mal drüber geguckt. Soweit ich es richtig gesehen habe, ist es gar nicht so viel Code, ich habe 3 .cpp und ~8 .hpp Dateien gesehen.
Mir fällt die inkonsistente Benamsung der Methoden auf. Logger ist so ein Beispiel. Hier hast Du "getLast" und "isEmpty" aber "begin" und "end".
Dann die Verwendung von "const" ist auch nur halb durchdacht.
Außerdem muss man nicht zwingend immer "auto" verwenden, damit es C++11 Code ist. An manchen Stellen wirkt es bei Dir etwas arg gewollt.
Dann kann man noch über die einzelnen Implementierungen diskutieren. Gerade für Logger gibt es da draußen wesentlich bessere. In Deinem Fall müßte ich in jeder Klasse, wo ich den verwenden will, eine Instanz erstellen.
Aber wir wollen das mal nicht zu schlecht reden da Du ja noch Student bist. Das meine ich jetzt nicht böse. Aber man sieht es am Code.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Glocke« (25.01.2015, 11:16)
Die Benutzung von auto geht so ziemlich auf den persönlichen Stil zurück. Ich finde deinen Code etwas mühsam zu lesen, da ich immer zwei Mal überlegen muss, was man da nun für einen Typ erhält/damit arbeitet.Im Grunde verwende ich auto für folgende Szenarien:
für Iteratoren: auto i = std::find(...);
für Ergebnisse von Typecasts: auto fpos = static_cast<sf::Vector2f>(pos);
und sonst überall wenn der Rückgabetyp relativ lang ist, er aber aus dem Kontext klar ist, z.B. auto& rect = view.getViewport();
Ich finde deinen Code etwas mühsam zu lesen, da ich immer zwei Mal überlegen muss, was man da nun für einen Typ erhält/damit arbeitet.
Schlussendlich ist es halt wie mit vielem in C++, man muss sich eine Art/einen Weg aussuchen und diesen dann konsequent durchziehen.
Werbeanzeige