Zuhause Persönliche Finanzen 10 Möglichkeiten, Fehler in C ++ zu vermeiden - Dummies

10 Möglichkeiten, Fehler in C ++ zu vermeiden - Dummies

Inhaltsverzeichnis:

Video: Anfängerfehler von Spiele-Entwicklern - Programmieren Lernen Podcast 2025

Video: Anfängerfehler von Spiele-Entwicklern - Programmieren Lernen Podcast 2025
Anonim

Es ist eine unglückliche Tatsache, dass Sie mehr Zeit damit verbringen werden, nach Fehlern zu suchen und sie zu entfernen, als Sie tatsächlich damit verbringen, Ihre C ++ - Programme an erster Stelle zu schreiben. Die hier vorgeschlagenen Vorschläge können Ihnen helfen, die Anzahl der Fehler zu minimieren, die Sie in Ihre Programme einschleusen, um die Programmierung angenehmer zu gestalten.

Alle Warnungen und Fehlermeldungen aktivieren

Die Syntax von C ++ ermöglicht eine Vielzahl von Fehlerprüfungen. Wenn der Compiler auf ein Konstrukt stößt, das er nicht entziffern kann, hat er keine andere Wahl, als eine Nachricht auszugeben. Es wird versucht, eine Synchronisierung mit dem Quellcode durchzuführen (manchmal weniger als erfolgreich), aber es wird keine ausführbare Datei generiert. Dies zwingt den Programmierer, alle Fehlermeldungen zu korrigieren.

Wenn C ++ jedoch auf eine Struktur stößt, die es herausfinden kann, aber die Struktur trotzdem fischig riecht, erzeugt C ++ eine Warnmeldung. Da C ++ sich ziemlich sicher ist, dass es versteht, was Sie wollen, wird es ausgeführt und erstellt eine ausführbare Datei, so dass Sie Warnungen ignorieren können, wenn Sie möchten. In der Tat, wenn Sie wirklich nicht gestört werden möchten, können Sie Warnungen deaktivieren.

Das Deaktivieren oder anderweitiges Ignorieren von Warnungen ist eine außergewöhnlich schlechte Idee. Es ist ein bisschen wie das Herausziehen der "Check Engine" -Leuchte auf dem Armaturenbrett Ihres Autos, weil es Sie stört. Wenn man das Problem ignoriert, geht es nicht weg.

Setzen Sie einen klaren und konsistenten Codierungsstil ein

Wenn Sie Ihren C ++ - Code klar und konsistent schreiben, verbessert dies nicht nur die Lesbarkeit Ihres Programms, sondern führt auch zu weniger Codierungsfehlern. Dieser etwas überraschende Sachverhalt ergibt sich aus der Tatsache, dass unser Gehirn nur über eine begrenzte Rechenleistung verfügt.

Wenn Sie Code lesen, der sauber und ordentlich ist und einem Stil folgt, mit dem Sie vertraut sind, verbringen Sie sehr wenig Energie damit, die Syntax der C ++ - Anweisungen zu analysieren. Dadurch bleibt mehr CPU-Leistung des Gehirns übrig, um zu decodieren, was das Programm zu tun versucht und nicht wie es das macht.

Mit einem guten Codierungsstil können Sie Folgendes bequem ausführen:

  • Unterscheiden von Klassennamen, Objektnamen und Funktionsnamen

  • Verstehen, wofür die Klasse, Funktion oder das Objekt verwendet wird, basierend auf seinem Namen

  • Unterscheidet Präprozessorsymbole von C ++ - Symbolen (dh #define-Objekte sollten hervorstechen)

  • Identifiziert Blöcke von C ++ - Code auf derselben Ebene (dies ist das Ergebnis konsistenter Einrückungen)

Außerdem müssen Sie ein Standardformat für Ihre Modulheader einrichten, das Informationen zu den Funktionen oder Klassen in jedem Modul, zum Autor, zum Datum, zur Version und zum Änderungsverlauf enthält.

Alle an einem einzelnen Projekt beteiligten Programmierer sollten denselben Codierungsstil verwenden. Ein Programm, das in einem Patchwork verschiedener Codierungsstile geschrieben ist, ist verwirrend und sieht unprofessionell aus.

Den Code kommentieren, während Sie ihn schreiben

Sie können Fehler vermeiden, wenn Sie Ihren Code kommentieren, während Sie ihn schreiben, anstatt zu warten, bis alles funktioniert, und dann zurückgehen und Kommentare hinzufügen.

Die Formulierung von Kommentaren zwingt Sie dazu, eine Bestandsaufnahme dessen zu machen, was Sie gerade tun. Kurze Kommentare sind aufschlussreich, sowohl wenn Sie sie später lesen, als auch wenn Sie sie schreiben. Schreibe Kommentare, als ob du mit einem anderen, sachkundigen Programmierer sprichst.

Führen Sie mindestens einmal einen Pfad im Debugger aus

Als Programmierer müssen Sie verstehen, was Ihr Programm tut. Es reicht nicht aus, dass das Programm den erwarteten Wert ausgibt. Sie müssen alles verstehen, was Ihr Programm tut. Nichts gibt Ihnen ein besseres Gefühl dafür, was unter der Haube vor sich geht als single-stepping das Programm und führt es Schritt für Schritt mit einem guten Debugger aus (wie der mit Code:: Blocks).

Darüber hinaus benötigen Sie beim Debuggen eines Programms Rohmaterial, um ein bizarres Verhalten zu erkennen, das beim Ausführen des Programms auftreten kann. Nichts gibt Ihnen dieses Material besser als Einzelschritt durch jede Funktion, wenn sie in Betrieb genommen wird.

Schließlich, wenn eine Funktion fertig ist und bereit ist, dem Programm hinzugefügt zu werden, muss jeder logische Pfad mindestens einmal durchlaufen werden. Bugs sind viel einfacher zu finden, wenn Sie die Funktion selbst untersuchen und nicht erst, nachdem sie mit den restlichen Funktionen in den Pot geworfen wurden - bis dahin haben Sie sich neuen Programmierherausforderungen gestellt.

Begrenzen Sie die Sichtbarkeit

Die Beschränkung der Sichtbarkeit von Klasseninternalen auf die Außenwelt ist ein Eckpfeiler der objektorientierten Programmierung. Die Klasse sollte für ihren internen Zustand verantwortlich sein - wenn etwas in der Klasse vermasselt wird, dann ist es der Fehler des Klassenprogrammierers. Der Anwendungsprogrammierer sollte sich um die Lösung des Problems kümmern.

Insbesondere bedeutet eingeschränkte Sichtbarkeit, dass Datenmitglieder außerhalb der Klasse nicht zugänglich sein sollten - das heißt, sie sollten als geschützt gekennzeichnet sein. Außerdem müssen Mitgliedsfunktionen, von denen die Anwendungssoftware nichts wissen muss, ebenfalls als geschützt gekennzeichnet werden. Stellen Sie keine der Interna der Klasse mehr frei als notwendig, um die Aufgabe zu erledigen.

Verfolgen des Heapspeichers

Der Verlust des Heapspeichers ist die häufigste Quelle schwerwiegender Fehler in Programmen, die in das Feld freigegeben wurden - und gleichzeitig das schwierigste Problem beim Suchen und Entfernen. (Da diese Fehlerart so schwer zu finden und zu entfernen ist, ist sie in Programmen, die Sie kaufen, weit verbreitet.) Möglicherweise müssen Sie ein Programm stundenlang ausführen, bevor Probleme auftreten (abhängig davon, wie groß der Speicherverlust ist).

Generell sollten Programmierer den Heapspeicher immer auf der gleichen "Ebene zuweisen und freigeben. "Wenn eine Memberfunktion MyClass:: create () einen Block des Heapspeichers reserviert und an den Aufrufer zurückgibt, sollte ein Member MyClass:: release () vorhanden sein, der ihn an den Heap zurückgibt.Insbesondere sollte MyClass:: create () nicht die übergeordnete Funktion erfordern, um den Speicher freizugeben.

Wenn überhaupt möglich, sollte MyClass solche Speicherzeiger selbst im Auge behalten und sie im Destruktor löschen.

Nullen der Zeiger nach dem Löschen des Zeigers auf

Stellen Sie sicher, dass Zeiger gelöscht werden, nachdem sie nicht mehr gültig sind. Sie tun dies, indem Sie ihnen den Wert nullptr zuweisen. Die Gründe für diese Aktion werden mit Erfahrung deutlich: Sie können weiterhin einen Speicherblock verwenden, der an den Heap zurückgegeben wurde und ihn nicht einmal kennt. Ein Programm kann 99 Prozent der Zeit fehlerfrei laufen, was es sehr schwierig macht, die 1 Prozent der Fälle zu finden, in denen der Block neu zugeordnet wird und das Programm nicht funktioniert.

Wenn Sie Zeiger ungültig machen, die nicht mehr gültig sind und Sie versuchen, sie zum Speichern eines Werts zu verwenden (Sie können nichts am oder in der Nähe des Null-Speicherorts speichern), stürzt Ihr Programm sofort ab. Abstürze klingen schlecht, aber es ist nicht, wenn es ein Problem aufdeckt. Das Problem ist da; Es ist nur eine Frage, ob Sie es finden oder nicht, bevor Sie es in Produktion setzen.

Verwenden Sie Ausnahmen, um Fehler zu behandeln

Der Ausnahmemechanismus in C ++ ist dafür ausgelegt, Fehler bequem und effizient zu behandeln. Im Allgemeinen sollten Sie einen Fehlerindikator ausgeben, anstatt ein Fehler-Flag zurückzugeben. Der resultierende Code ist einfacher zu schreiben, zu lesen und zu warten. Außerdem erwarten es andere Programmierer, und Sie würden sie nicht enttäuschen wollen, oder?

Beschränken Sie die Verwendung von Ausnahmen auf echte Fehler. Es ist nicht notwendig, eine Ausnahme von einer Funktion zu werfen, die ein "nicht funktioniert" -Indikator zurückgibt, wenn dies ein Teil des täglichen Lebens für diese Funktion ist.

Destruktoren virtuell deklarieren

Vergessen Sie nicht, einen Destruktor für Ihre Klasse zu erstellen, wenn der Konstruktor Ressourcen wie Heap-Speicher reserviert, die zurückgegeben werden müssen, wenn das Objekt sein endgültiges Ende erreicht. Wenn Sie einen Destruktor erstellt haben, vergessen Sie nicht, ihn als virtuell zu deklarieren.

"Aber", sagst du, "meine Klasse erbt nichts von irgendetwas, und sie wird nicht von einer anderen Klasse unterklassifiziert. "Ja, aber es könnte in Zukunft eine Basisklasse werden. Wenn Sie keinen guten Grund haben, den Destruktor nicht virtuell zu deklarieren, dann tun Sie dies, wenn Sie die Klasse zum ersten Mal erstellen.

Bereitstellen eines Kopierkonstruktors und eines überladenen Zuweisungsoperators

Wenn Ihre Klasse einen Destruktor benötigt, benötigt sie fast sicher einen Kopierkonstruktor und einen überladenen Zuweisungsoperator. Wenn Ihr Konstruktor Ressourcen wie Heap-Speicher zuweist, wird der standardmäßige Kopierkonstruktor und Zuweisungsoperator nichts anderes bewirken, als durch die Generierung mehrerer Zeiger auf dieselben Ressourcen einen Chaos zu verursachen.

Wenn der Destruktor für eines dieser Objekte aufgerufen wird, werden die Assets wiederhergestellt. Wenn der Destruktor für die andere Kopie kommt, wird das alles vermasseln.

10 Möglichkeiten, Fehler in C ++ zu vermeiden - Dummies

Die Wahl des Herausgebers

Web Marketing: Warum Suchmaschinen existieren - Dummies

Web Marketing: Warum Suchmaschinen existieren - Dummies

Wenn Sie verstehen, warum Suchmaschinen existieren, können sie für Sie in Ihrem Web-Marketing-Geschäft arbeiten. Also, hier ist eine kurze Lektion, warum Suchmaschinen existieren und wie Sie sie nutzen können, um Geld zu verdienen. Suchmaschinen liefern Relevanz. Relevanz bedeutet, dass Besucher auf Suchergebnisse klicken und zufrieden sind mit ...

Was sind Tür- und Informationsseiten? - dummies

Was sind Tür- und Informationsseiten? - dummies

Eine Doorway-Seite wird nur als Zugang von einer Suchmaschine zu Ihrer Website erstellt. Doorway-Seiten werden manchmal als Gateway-Seiten und Geisterseiten bezeichnet. Die Idee besteht darin, hoch optimierte Seiten zu erstellen, die von Suchmaschinen aufgenommen und indiziert werden und die mit etwas Glück gut ranken und somit den Traffic auf eine ...

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Was ist eine Weiterleitung bei der Suchmaschinenoptimierung? - Dummies

Eine Weiterleitung ist das automatische Laden einer Seite ohne Benutzereingriff. Sie klicken auf einen Link, um eine Webseite in Ihren Browser zu laden, und innerhalb von Sekunden verschwindet die geladene Seite, und eine neue wird angezeigt. Designer erstellen häufig Seiten für Suchmaschinen - optimierte, schlüsselwortreiche Seiten -, die Besucher auf die ...

Die Wahl des Herausgebers

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

Behandeln Probleme mit dem Kundenservice über Social Media - Dummies

, Wenn Kunden wissen, dass sie direkt mit ein Geschäft in den sozialen Medien, können sie aus einer beliebigen Anzahl von Gründen mit ihnen in Verbindung treten. Aber sobald sie merken, dass ein Problem mit dem Kundenservice oder einer Produktfrage über einen einzigen Tweet oder Beitrag angesprochen werden kann, ist es wahrscheinlicher, dass sie mit dem Unternehmen Geschäfte machen.

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Acht Möglichkeiten, Social Media Feedback zu erhalten - Dummies

Die heutige Technologie verändert die Art und Weise, wie wir Geschäfte machen blitzschnell. Auch der Social-Media-Handel bewegt sich blitzschnell, aber durch die Beobachtung von Erwähnungen und Fragen an die Community können Sie einen Eindruck davon bekommen, wie Ihr Markt über bevorstehende Veränderungen denkt. Auch andere Posts können Ihnen helfen, kritisches Feedback aus der Öffentlichkeit zusammenzustellen ...

Manage Social Media Commerce mit HootSuite - dummies

Manage Social Media Commerce mit HootSuite - dummies

HootSuite ist ein Social Media Management System zur Umsetzung von Outreach und Überwachung in sozialen Netzwerken über ein einziges webbasiertes Dashboard. Für Unternehmen wird HootSuite am häufigsten von Social-Media-Teams mit mehreren Agenten verwendet, aber auch viele Einzelanwender mögen es. Wenn Sie auf der Suche nach einer robusten Plattform sind, die alles an einem Ort hält, ...

Die Wahl des Herausgebers

Die 5 Kornsterne der Mittelmeer - Dummies

Die 5 Kornsterne der Mittelmeer - Dummies

Die Mittelmeerdiät ist in der Praxis des Habens begründet ein Vollkorn zu jeder Mahlzeit. Und nein, das bedeutet nicht, eine ganze Platte Vollkornspaghetti mit Fleischsauce zum Abendessen zu essen. Stattdessen machen die Menschen im Mittelmeerraum ihr Getreide zur Beilage oder schaffen durch die Zugabe von magerem Eiweiß mehr Gleichgewicht ...

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Strebe nach Gesundheit mit 7 bis 10 Portionen Obst und Gemüse - Schnuller

Der Verzehr von sieben bis zehn Portionen Obst und Gemüse pro Tag, wie sie für die mediterrane Ernährung empfohlen werden, mag sehr viel erscheinen, aber es muss keine so große Herausforderung sein. Wenn Sie nicht die Früchte und das Gemüse lieben, die spezifisch mit der Mittelmeerdiät verbunden sind, ist das okay! Essen Sie jede Art von Obst oder Gemüse, die Sie ...

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Die gesundheitlichen Vorteile von mediterranen Kräutern und Gewürzen - Dummies

Sie haben vielleicht gedacht, dass der Oregano und Basilikum in Ihrer Spaghetti-Sauce lieferte nur einen deutlichen italienischen oder mediterranen Geschmack, aber diese kleinen Kräuter sind Pflanzen, was bedeutet, dass sie alle Arten von gesundheitlichen Vorteilen haben, die einen großen Einfluss auf Ihre allgemeine Gesundheit haben können. Einfache Gewürze wie Ingwer und Oregano enthalten Phytochemikalien, ...