Trash Manager ist soweit fertig



  • Jup. Google mal nach "c++ pass by reference" oä. Selbst als Pointer könntest du es übergeben wenn du es am Stack anlegst.

    Nach einem ersten Blick auf params uä. würde ich mir auch mal ein paar Containerklassen ansehen, die würden einigen Code kompakter und lesbarer machen.


  • Mod

    Ich sehe da überhaupt 1000 weitere Fehlerquellen und falsche Designentscheidungen. Allererste Datei, ziemlich weit oben:

    trm::Database::Database()
    {
    
    }
    
    trm::Database::~Database()
    {
        //Close Database
        sqlite3_close(db);
    }
    

    RAII nicht verstanden. Da habe ich doch gleich keine Lust mehr, weiter zu lesen. Habe ich aber trotzdem. Aber nicht lange, denn die Art und Weise, wie die Fehler behandelt werden, geht auch gar nicht. Da habe ich mir spontan ein Beispiel genommen und ein exit(0) auf den Leseprozess gemacht. Wen kümmert schon, wenn der Browsertab nun für immer offen bleibt? 😉

    Fazit: Nein, das ist nicht gut. Da fehlen grundlegende Kenntnisse über Design und Programmstruktur in C++.



  • SeppJ: Ich weiß nicht so recht, ich habe in freier Wildbahn schon wesentlich schlimmeres gesehen. Klar gibt es da viel zu reparieren, aber wenn er ein paar passende Grundlagen-Texte liest und nebenbei das Projekt Schritt für Schritt aufräumt, lernt er extrem viel.

    "Effective C++" und "More Effective C++" vielleicht? Bin nicht mehr am laufenden was aktuell gerade gut ist, aber Bennisens Projekt sieht für mich schon so aus, als wäre das eine gute Grundlage um mehr zu lernen.

    edit: Verstehe ich richtig dass "Effective C++" von "Effective Modern C++" abgelöst wurde?


  • Mod

    nman schrieb:

    edit: Verstehe ich richtig dass "Effective C++" von "Effective Modern C++" abgelöst wurde?

    Ich würde eher sagen, dass es eine Ergänzung ist. "Effective Modern C++" ist quasi "Effective C++11" mit einem zeitloseren Titel, aber "Effective C++" wird dadurch weder überflüssig, noch werden in "Effective Modern C++" die Lehren aus "Effective C++" wiederholt.

    Die Bücher klingen tatsächlich nach etwas, das Bennisen sehr gut täte. Er kann offensichtlich programmieren, er hat bloß nie gezeigt bekommen, wie man effektiv 😉 programmiert.

    (Wobei das mit dem "new weil ich einen Pointer brauche" aber schon ein krasser Hauer ist. Keine Ahnung, wo er das her haben kann und wie man diese Denkweise wieder los wird. Möglicherweise sind die Meyers-Bücher da doch zu anspruchsvoll. Referenzen, Zeiger & Co. sind Grundlagen)



  • Ich hab halt keine Bücher gelesen. Außer ein paar Bücher mit Grundlagen. Bei mir gings halt immer einfach drauf los. Muss auch ehrlich sagen das ich von Design null Ahnung habe.



  • Bennisen schrieb:

    Ich hab halt keine Bücher gelesen. Außer ein paar Bücher mit Grundlagen. Bei mir gings halt immer einfach drauf los. Muss auch ehrlich sagen das ich von Design null Ahnung habe.

    Die meisten Menschen lernen am besten durchs "Machen". Dabei hat man nämlich Erfolgserlebnisse, was einen weiter anspornt.

    Bücher sind nur nützliches Beiwerk. Programmierer-Bücher für Fortgeschrittene beschäftigen sich auf tausenden von Seiten mit Bugs und Fallstricken. Aber ohne Praxis vergisst man alles schneller, als man es lesen konnte. 🙂



  • SeppJ schrieb:

    Wobei das mit dem "new weil ich einen Pointer brauche" aber schon ein krasser Hauer ist. Keine Ahnung, wo er das her haben kann und wie man diese Denkweise wieder los wird. Möglicherweise sind die Meyers-Bücher da doch zu anspruchsvoll. Referenzen, Zeiger & Co. sind Grundlagen

    Glaube ich gar nicht. Vieles davon lernt er vmtl. wirklich gut, wenn er drauflos programmiert und Grundlagen-Fehler macht. Wenn man deswegen dann Schwierigkeiten hat und die dann behebt, merkt man sich das alles für immer und ewig.

    Bennisen: Ich verstehe die Herangehensweise gut und finde es auch sinnvoll, dass du dich auch an echten Tools versuchst und die auf GitHub stellst. Trotzdem: Lies jetzt Effective C++ und falls du irgendwas da drin nicht verstehst, frag nach oder lies irgendwoanders weiter nach. Effective C++ ist in meinen Augen eines der wichtigsten C++-Bücher, das ausnahmslos _jeder_ C++-Entwickler gelesen haben sollte und wird dir zum jetzigen Zeitpunkt vmtl. zu einem riesigen Sprung nach vorne verhelfen.

    Effective C++ | ISBN: 0321334876

    Ich mag den Meyers sehr gerne, weil er unheimlich angenehm lesbar ist und nützliche, praxis-orientierte Tips in mundgerechten Häppchen präsentiert. Sehr sehr empfehlenswertes Buch, das besonders Praktikern sehr viel weiterhilft.



  • Werde mir das mal anschauen Danke



  • egalo schrieb:

    Mechanics schrieb:

    prepared statements statt + "'".

    Die braucht man doch nur, wenn der input ein unbekannter String ist (nicht validierter user input zB.) ?!

    Jaein, es ist heut zu Tage einfach guter Stil es mit prepared statements zu machen, da diese wirklich sehr starke sicherheit garantieren, und auch bei einer eventuellen falschen validierung (escaping) eines user strings sicherheit bieten.

    Ubuntu bietet mit seinem Standart backuptool übrigens die Wiederherstellung von Datein, die längst gelöscht sind, in beliebiger Version 😉


Anmelden zum Antworten