C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht



  • @SeppJ
    Reagierst du da nicht ein wenig über? So schlecht finde ich den Code nicht.

    Gewiss, der Code hat ein paar Macken und nutzt die MFC, einen Aufsatz der WinAPI, welche nicht gerade Einstiegs- bzw. Benutzerfreundlich ist. Aber ich kenne da eine ganze Reihe von Stilblüten welche deutlich schlimmer sind.

    Ich habe da immer noch meine Projektarbeit in Erinnerung, wo ich eine kleine Biliothek benutzte, welche aus 500 Klassen bestand. Jede Klasse sah z.B. folgendermaßen aus:

    class TranslationPxyzKphiz
    {
      // ....
      double GetWert() {   
        return Wert[WertIndizes[1]]+cos(Wert[WertIndizes[3]])-sin(Wert[WertIndizes[2]])...  
      }
    };
    

    Die Funktion GetWert() war in allen Klassen vorhanden und zwischen 2-100 Zeilen groß. Doku gab es keine. Das Ergebnis der Projektarbeit: Die Bibliothek war suboptimal, nicht wartbar und sollte in Zukunft neu geschrieben werden.

    Und es wurde im Laufe der Zeit leider nicht besser.

    Meine neuste Stilblüte betrifft ein SDK zur Entwicklung von Nordic Funkchips. Das SDK wird mittels der Datei sdk_config.h "konfiguriert". DIese sieht z.B. folgendermaßen aus:

    https://github.com/NordicPlayground/nRF52-ble-long-range-demo/blob/master/peripheral_long_range_demo_kit/pca10056/s140/config/sdk_config.h

    Und falls du wissen möchtest, was "konfiguriert" in diesem Fall bedeutet, der folgender Link. EIn Beruhigungstee vorher ist aber empfehlenswert.

    https://devzone.nordicsemi.com/f/nordic-q-a/39503/undefined-reference-on-the-linker-level



  • @Th69 sagte in C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht:

    @reavz21: Das ist u.a. das sog. Loop-switch sequence Antipattern!

    Ich find ja interessant, das es dafür einen Begriff gibt. Ich dachte erst, die Konstruktion wäre mehr oder weniger zufällig durch Flickerei entstanden. Aber wenn das auch aus dem Buch kommt, wird das wohl wirklich benutzt.


  • Mod

    @Quiche-Lorraine sagte in C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht:

    @SeppJ
    Reagierst du da nicht ein wenig über? So schlecht finde ich den Code nicht.

    Wir haben Code, der es schafft, einen for-switch-Loop mit einer not-eof Schleife zu kombinieren, und das sogar ohne for oder switch zu nutzen. Desweiteren haben wir ein Best-of aller anderen bekannten Antipatterns: Non-Inline-Code in Headern, using namespace in Headern, sämtliche Dependencies hardcoded, fstream wo ifstream hingehört, Variablendeklaration im C-Stil, deutsche Bezeichner, '\r\n', close, vier verschiedene Stile für Dateinamen, leerer Destruktor. In dem zweiten Code ist bestimmt noch mehr, aber da unformatiert, mag ich das nicht lesen. Jeder einzelne dieser Mängel wäre ein absoluter Indikator, dass ein Buch nicht zu gebrauchen ist, aber das hier soll angeblich alles so aus einem einzigen Buch stammen!? Zusammen mit dem unformatierten Code und den Weihnachtsferien habe ich eher die Vermutung, jemandem ist langweilig und man möchte uns verarschen. Alleine das for-switch-not-eof ist so kreativ, das muss sich doch jemand mit Erfahrung absichtlich ausgedacht haben.



  • @reavz21 sagte in C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht:

    bin absoluter C++ bzw. Programmier Anfänger.
    Mache hier gerade ein Buch und komme nicht weiter.

    Ist das so zu verstehen, dass Du ein Buch schreiben willst, das dem Leser erklären will, wie man c++ Programme schreibt ?



  • @SeppJ
    Ok, verstehe ich.

    Meine Schmerzgrenze ist aber in den letzten Jahren erheblich gesunken. Einerseits durch die Zusammenarbeit mit einem indischen outgesourcten Entwicklungsteam, endlosen fruchtlosen Diskussionen mit Dos und Don'ts oder Premature Optimizations und so manchem Code, welcher vermutlich von Fachfremden bzw. Laien geschrieben wurde.

    Gerade das oben gezeigte SDK mit nicht erkennbarem Schnittstellen-Design, mit seinen mehreren tausend #define Anweisungen, ebensovielen möglichen "undefined reference" Fehlern und stellenweise überdimensioniertem Code, ist ein Beispiel hierfür. So manch einer könnte da schon ausrasten bzw. sich verarscht fühlen.

    Aber es bringt nichts. Ich lernte die Jahre, dass je emotionaler eine Reaktion ist, desto weniger hören die Leute zu, sofern sie überhaupt zuhören. Meine Leidenschaft zur Software-Entwicklung wird nicht (immer) von anderen geteilt.

    Deswegen verfolge ich da eine Art Matrix Philosophie: "Ich kann dir den Weg zeigen, gehen musst du diesen ganz allein". Diese Philosophie schützt mich auch vor Leuten mit zweifelhafter Motivation.

    Aber manchmal gelingt es mir bei anderen Leuten einen Aha Effekt zu erzeugen. So z.B. warum Copy-Paste-Modifiy nicht gut ist. Oder warum ein std::vector besser ist als ein C Array. Dafür muss aber manchmal erst das Kind in den Brunnen fallen.

    PS:
    Nur weil meine Schmerzgrenze erheblich gesunken ist, heißt das nicht, dass mein Code dementsprechend aussieht.


  • Mod

    Mit meiner Schmerzgrenze sieht es ähnlich aus. In vielen Fällen, spare ich mir heute sogar einen Kommentar. Einzig bei dem Code, der aus meiner Abteilung rausgeht erwarte ich das bestimmte Standards eingehalten werden...
    Aber selbst hier bekomme ich von manchem Azubi, dann eine Rückfrage: "Wieso ist das falsch? Es steht doch auf der Seite x im Internet..."

    Heute ist es 90% aller Entwicklern egal, wie gut/sinnvoll Code aussieht.
    Ihre Bosse zwingen sie schnell Code zu liefern. Keinen guten Code.
    90% des Codes im Internet ist mit Vorsicht zu genießen und wird dennoch kommentarlos/gedankenlos kopiert.

    Ich habe es aufgegeben zu bloggen, ich habe es aufgegeben mich in Communities zu engagieren weil sich schlechter Code per Copy & Paste schneller verbreitet als guter Code und man auch noch angemacht wird, wenn man sachlich auf bestimmte "Probleme" hinweist...



  • @Quiche-Lorraine @Martin-Richter Ich kann eure Frustration verstehen. Aber, ich finde das Schade. Um guten Code schreiben zu können, muss man auch mal guten Code gesehen haben. Und, wenn die Leute, die guten Code zeigen könnten, da keine Lust zu haben, dann lernen die Leute auch nie, guten Code zu schreiben.



  • @Schlangenmensch sagte in C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht:

    @Quiche-Lorraine @Martin-Richter Ich kann eure Frustration verstehen. Aber, ich finde das Schade. Um guten Code schreiben zu können, muss man auch mal guten Code gesehen haben. Und, wenn die Leute, die guten Code zeigen könnten, da keine Lust zu haben, dann lernen die Leute auch nie, guten Code zu schreiben.

    Dazu gehört aber auch Lernbereitschaft und der Wille, Neues zu akzeptieren. Es gibt Menschen, die die Auffassung vertreten, dass das, was 1995 gut war, auch heute noch gut ist. Wenn sie dann anderen Code sehen sagen sie dann: "Jaaaa, kann man auch so machen.". Das war's dann aber auch. Ich habe meinen Idealismus aufgegeben und kämpfe nicht mehr gegen Windmühlen. Hab genug damit zu tun, meine eigenen Fähigkeiten zu verbessern.
    In unserem Team hat es 12 Jahre gebraucht, bis einer std::vector benutzt hat. Bei allen anderen ist er verpönt, weil er zu langsam sei. Smart Pointer sind Werk des Teufels, da hat man ja keine Kontrolle, wann was zerstört wird. Bei new/delete und malloc/free kann man das genau sehen und weiß sofort Bescheid.



  • @DocShoe Ja, es gibt viele "alte Hasen" die nicht bereit sind, neues zu lernen. Und manche haben auch schon von 25 Jahren kein gutes C++ geschrieben, selbst für damalige Verhältnisse. Ich durfte mich mit solchem Code und Entwicklern auch schon auseinandersetzen.

    Aber, es gibt auch einige junge motivierte Leute, die gerne lernen würden. Und denen wird es manchmal schwer gemacht.
    Ich versuche einmal im Jahr zumindest eine kleine C++ Konferenz zu besuchen, die Schnittmenge da ist zwar sicher nicht Ausschlaggebend, denn da findet man nur die motivierten Leute, aber das zeigt mir auch jedes mal, dass es sie gibt.

    P.S. Ich selbst habe ja hier häufig keine Lust mehr, unformatierten Code zu lesen und zu erraten, was vlt gewollt sein könnte, aber trotz allem würde ich mich freuen, wenn, gerade Anfängern, häufiger mal gezeigt würde, wie es ordentlich geht.


  • Mod

    @DocShoe sagte in C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht:

    Dazu gehört aber auch Lernbereitschaft und der Wille, Neues zu akzeptieren. Es gibt Menschen, die die Auffassung vertreten, dass das, was 1995 gut war, auch heute noch gut ist. Wenn sie dann anderen Code sehen sagen sie dann: "Jaaaa, kann man auch so machen.". Das war's dann aber auch. Ich habe meinen Idealismus aufgegeben und kämpfe nicht mehr gegen Windmühlen. Hab genug damit zu tun, meine eigenen Fähigkeiten zu verbessern.

    1995? Lehrfilm von 1975, der schon damals seit 20 Jahren altbekannte Weisheiten zeigt. Könntest du 1995 oder auch heute noch so als Lehrfilm nutzen, es hat sich nichts wesentliches verändert. Code ist ein Dokument für andere Menschen. So zu schreiben, dass andere (und meistens auch derjenige selbst) es nicht lesen können, war noch nie in der Menschheitsgeschichte akzeptabel, lange bevor es Computercode gab, und wie man gute Dokumente schreibt ist auch bekannt so lange es Dokumente gibt.



  • @Schlangenmensch sagte in C++ MFC-APP hängt sich nach drücken des Button auf. Öffnet txt Datei nicht:

    Ich kann eure Frustration verstehen.

    Mich frustieren hauptsächlich die vielen endlosen Diskussionen. Diese beginnen meistens mit einer steilen These, gefolgt von viel Halbwissen, welche öfters mal in Aufregung / Empörung mündet und Teilnehmer schnell beleidigt sind. Forscht man dann nach und möchte die Situation am nächsten Tag klären, so interresiert dies keinen mehr und die nächste Diskussion beginnt.

    Ich lernte: Nicht Argumente geben einem Recht, sondern Erfolge.

    Und ich zweifele im zunehmenden Maße an den Diskussionsgründen bzw. Motivation. Eine steile These ist meistens eine gute Grundlage für hitzige Diskussion s.d. man seinen Emotionen freien Lauf lassen kann. Und nachdem sich die Situation beruhigt, ist mindestens eine Stunde Arbeitszeit flöten gegangen.



  • Hallo Liebe Leute

    Bin ganz neu hier und das Thema ist schon alt aber der Text scheint wohl
    aus dem Buch "C++ Programmieren für Einsteiger" zu sein.
    Habe mir das Buch selber gerade gekauft und arbeite das gerade als blutiger Anfänger durch..
    Bis zu dem Code von oben (letzter Artikel) bin ich noch nicht gekommen aber der Text ist mir bekannt vorgekommen 😉

    l.G. Robert


Anmelden zum Antworten