Sinnvoller Einsatz der Moeglichkeiten von C++



  • Ich glaube nun, die Grundlagen von C++ zu beherrschen.
    Doch, wenn ich einen Code schreibe, dann weiss ich oft nicht, wo ich anfangen soll.
    Die Fuelle der Moeglichkeiten stellt mich vor die Qual die Wahl, wie die Implementation aussehen soll.
    Mein Frage, an euch:

    Wie/Wo/Wann setze ich Klassen, Vererbung, Templates etc. sinnvoll/effizient/elegant ein.

    Ich wuerde mich sehr ueber eure Ratschlaege freuen.

    MfG

    Raptor

    PS:

    Information

    Tut uns Leid, Suchfunktion gibts erst wieder mit neuem Server!



  • Was du brauchst, ist ein schönes Buch über die Philosophie der OOP. 😉

    Ich denke mal, hier eine allgemeingültige Antwort zu geben, ist gerade im Hinblick auf die Effizienz falsch.
    Und was die Eleganz angeht: Da hat wohl jeder seine eigene Idealvorstellung.
    Ich verstehe z.B. nicht das Bestreben einiger Coder, immer gleich alle möglichen Funktionen (auch Hilfsroutinen) in eine Klasse quetschen zu wollen, weil sie denken, dies wäre der Inbegriff der OOP.
    Eine Klasse schreibe ich nur dann, wenn ich auch mehr als ein Objekt instanziere.Ansonsten nutze ich Namespaces und statische Funktionen. Viele sehen das wiederum anders -> Java.

    Außerdem denke ich, dass die Möglichkeit der Wiederverwendung zu oft überbetont ist. Dies mag für Bibliotheken sinvoll sein, aber jede Klasse gleich typenunabhängig zu schreiben, halte ich für übertrieben.
    Schreib deinen Code so, dass er dir bei deinem Problem nützt.
    Wenn du dann merkst, du brauchst ihn öfters, mach eine Library draus.
    Und wenn du dann der Meinung bist, du wirst ihn noch ganz oft brauchen, oder er darf der Welt nicht vorenthalten werden, dann mach ein Template draus.

    Alles keine Ratschläge nur ne Meinung 🤡



  • ich zitiere zu dem thema mal 2 Sätze on Andrei Alexandrescou:

    aus Modernes C++Design Kapitel 1: Zusammenfassung schrieb:

    Meist besteht das Problem nicht darin,dass eine Designfrage nicht zu lösen wäre,sondern darin,dass es scheinbar zuviele Problemlösungen gibt

    Modernes C++Design Kapitel 1:Vorwort schrieb:

    Erfahrene Software Designer wissen,welche Entscheidungen ein gutes Design garantieren.Der Anfänger steht bei jeder Designentscheidung im luftleeren Raum.
    Ein erfahrener Programmierer ist mit einem guten Schachspieler vergleichbar,der mehrere Züge vorausschauen kann.Das lernt er aber erst im Laufe der Zeit.

    mit anderen Worten: kein Buch kann dir vermitteln was in der jeweiligen Situation zum Ziel führt, einzig ausschlag gebend ist deine Erfahrung,fang an zu programmieren, versuch es sogut wie möglich zu machen, und gib bei design fehlentscheidungen nicht auf, sondern ersetz den falschen teil,daraus lernst du, und beim nächsten mal machst du es automatisch besser 🙂

    @Seppschrott:
    vergiss die policies beim thema wiederverwendbarkeit nicht: du baust dir ein richtig schönes Framework für eine Klasse, und ersetz dann die komplette funktionalität durch Policies,das framework sorgt nur dafür, dass die policies in einem bestimmten Schema benutzt werden.
    Was rauskommt ist eine extrem vielseitige Klasse,die nicht verändert sondern nur erweitert werden muss

    ein beispiel: eine baumstruktur,du gibst das framework lose vor, aber das verhalten des baums wie anzahl der child nodes vom parent, auswahlverfahren der Knoten etc lässt du den user über policies regeln.
    wenn dud as gut machst, kann der user durch ersetzen von 3-4 template parametern aus einem rb tree(also die grundstruktur von map/multimap) einen octree zaubern,der die komplette funktionalität zum testen von 3dkollisionsabfragen enthält.



  • @Raptor
    das Problem ist, dass du dein Theoretisches Wissen mit deiner Praxis verbinden musst, am besten gelingt dir das, wenn du fleißig (guten) fremden Code liest und selber viel programmierst. Auch fleißiges lesen im Forum und im Usenet sind nützlich.


Anmelden zum Antworten