Datei close() nötig?



  • Dann doch lieber close() 🙂

    Mal im Ernst, der Missionierungseifer hier geht mir manchmal gewaltig auf den Senkel.



  • Helium schrieb:

    Ist doch klar. Er will dir sagen, das er gerne riesiege unhandhabbare Codemonster baut.

    Ja, nur kenne ich niemanden der das freiwillig in aller Öffentlichkeit zugeben würde. 🙂



  • Das ist immer die schönste Art, über andere herzuziehen und "Witze" zu machen.
    Ein bischen Ignoranz schadet scheinbar nie. Ja, ich programmiere nur Codemonster, inperformant und bin auch privat ein Arschloch.

    Mehr will ich nicht mehr dazu sagen. 👎



  • Ja und wie ist das jetzt wenn bei close() wirklich ein Fehler autritt wie Kde das gesagt hat? sollte man das wirklich ignorieren?



  • Wenn du unbedingt das failbit testen willst (wozu auch immer) - dann schreibe dir einen Guard dafür, der im Dtor .close() aufruft und das failbit checkt.

    Das hier ist imho der sinnvollste Ansatz.

    Ich kenne mich mit der Windows API nicht gut aus, aber auch dort kann CloseHandle() eine Ausnahme werfen (Grade bei m$ nachgeschaut). Unter Linux kann fclose folgendes machen:

    The fclose function may also fail and set errno for any of the errors
    specified for the routines close(2), write(2) or fflush(3).

    D.h. Wenn man ein modernes Betriebsystem mit Buffern und Caches verwendet kann es durchaus sein das man mehr in eine Datei schreibt als Festplattenplatz vorhanden ist (Beispiel). Diese Art von Fehler wird erst beim schließen sichtbar. Erst wenn die Datei erfolgreich geschlossen ist, ist auch garantiert das sie vollständig ist (Soweit der Programmierer das überprüfen kann).

    Aber so ein "haufen Aufwand" ist vielleicht zuviel wenn man bloß bisschen Text in irgendein Logfile knallen will oder wenn man NUR aus der Datei liest. Sprich es ist einfach Ermessenssache.

    mfg, KdeE

    ps: Ja ich verwende einen "Wächter" :p



  • Bashar schrieb:

    Mal im Ernst, der Missionierungseifer hier geht mir manchmal gewaltig auf den Senkel.

    Verstehe ich nicht, in diesem Thread wurde doch explizit gefragt ob man fstream::close selbst verwenden soll oder ob man dem Destruktor die Arbeit überlassen soll...

    dasding123 schrieb:

    Das ist immer die schönste Art, über andere herzuziehen und "Witze" zu machen.
    Ein bischen Ignoranz schadet scheinbar nie. Ja, ich programmiere nur Codemonster, inperformant und bin auch privat ein Arschloch.

    Jetzt mach mal halblang, wenn Du Dich von solchen Kleinigkeiten schon so beleidigen lässt dann weißt Du scheinbar echt nicht wie es in diesem Forum manchmal zugeht. 🙂



  • nman schrieb:

    Bashar schrieb:

    Mal im Ernst, der Missionierungseifer hier geht mir manchmal gewaltig auf den Senkel.

    Verstehe ich nicht, in diesem Thread wurde doch explizit gefragt ob man fstream::close selbst verwenden soll oder ob man dem Destruktor die Arbeit überlassen soll...

    Aber es kam in etwa die Antwort "close verwendet man nicht, niemals, und wers doch tut ist schlecht".



  • Bashar schrieb:

    Aber es kam in etwa die Antwort "close verwendet man nicht, niemals, und wers doch tut ist schlecht".

    Klar, das ist übertrieben, aber eine angemessene Antwort auf Dinge wie

    wird automatisch gemacht aber für mich ists schlechter stil wenn dus weglässt.

    Im Ernst: Wenn im Webzeugs wieder mal jemand erklärt warum Frames unbedingt auf jeder vernünftig strukturierten Website verwendet werden sollten, dann tendiere ich auch zu Pauschalisierungen à la "Frames verwendet man nicht, niemals, und wers doch tut ist schlecht".



  • Auch wenn derjenige dir dann einen Spezialfall demonstriert, in dem Frames u.U. doch sinnvoll sind? (Falls es diesen nicht geben sollte war das ein schlechter Vergleich 😉 )



  • Schlechter Stil ist auch unleserlicher Code. Und aus den paar Takten mach ich mir gar nix, höchstens der Optimizer 😉

    hey... die Taktezählerei hab ich schon seit mindestens 1,5 Jahren hinter mir. 🙂

    btw. ist es natürlich sowieso unsinnig, bei einem Dateizugriff noch mit irgendwelchen Mikrooptimierungen anzufangen, die genau einmal (beim Beenden) zum tragen kommen. 😃



  • Bashar schrieb:

    Auch wenn derjenige dir dann einen Spezialfall demonstriert, in dem Frames u.U. doch sinnvoll sind? (Falls es diesen nicht geben sollte war das ein schlechter Vergleich 😉 )

    Wenn jemand so einen Spezialfall demonstriert (was allerdings relativ selten der Fall ist) dann relativiere ich natürlich meine frühere Aussage. 🙂

    Daher in diesem Falle: Einen Extra-Scope nur um das close zu umgehen finde ich natürlich nicht sinnvoll, aber in den allermeisten Fällen kommt man auch sehr gut ohne close zurecht.



  • Shade Of Mine schrieb:

    Lasse ich das obj.close(); dann kann man davon ausgehen, dass obj ordnungsgemäß im Ctor zerstört wird.

    😃 Du räumst obj aber nicht viel Lebensfähigkeit ein 😃

    PS: Ctor != Dtor



  • nman schrieb:

    Daher in diesem Falle: Einen Extra-Scope nur um das close zu umgehen finde ich natürlich nicht sinnvoll, aber in den allermeisten Fällen kommt man auch sehr gut ohne close zurecht.

    Sag ich doch 😉 Man sollte nicht mehr Aufwand treiben als nötig, nur um das close zu vermeiden. Irgendwo hat dieser Stil-Wahn auch mal seine Grenzen.



  • Bashar schrieb:

    Sag ich doch 😉 Man sollte nicht mehr Aufwand treiben als nötig, nur um das close zu vermeiden. Irgendwo hat dieser Stil-Wahn auch mal seine Grenzen.

    Passt eigentlich auch sehr schön in meine Ansichten rein; Extra-Scopes für sowas sind auch nicht schön (unter anderem weil nicht orthogonal und damit schlechter lesbar).



  • Ihr nehmt das, was ich sage, viel zu ernst 😃

    Aber zu folgendem:

    (unter anderem weil nicht orthogonal und damit schlechter lesbar).

    Was ist wo rechtwinklig?



  • Helium schrieb:

    Was ist wo rechtwinklig?

    http://www.catb.org/~esr/writings/taoup/html/ch04s02.html



  • Im englischen gebraucht (/missbraucht?) man heutzutage ortogonal teilweise als "von einander unabhängig". Im Deutschen heist orthogonal aber immernoch rechtwinkllig und wir können problemlos unabhängig sagen.



  • Dann könnte man auch auf englisch independent sagen. Orthogonal kommt aus der Mathematik. 2 Vektoren sind orthogonal, wenn ihr Skalarprodukt 0 ist.



  • orthogonal ist griechich
    ortho bedeutet gerade, aufrecht; richtig, recht
    Was hat das mit dem Skalarprodukt zu tun?

    BTW, sollte das Skalarprodukt zweier Vektoren 0 sein stehen diese nicht zufällig genau senkrecht zueinander?



  • Helium schrieb:

    BTW, sollte das Skalarprodukt zweier Vektoren 0 sein stehen diese nicht zufällig genau senkrecht zueinander?

    Ja, im R³ stimmt das.


Anmelden zum Antworten