Ich bin ein Informatikstudent, und infolgedessen wurde mir C ++ als eine bessere Version von C mit Klassen beigebracht. Am Ende versuche ich, das Rad immer dann neu zu erfinden, wenn eine Lösung für ein komplexes Problem erforderlich ist. Nur um irgendwann danach eine Sprachfunktion oder eine Standard-Bibliotheksroutine zu finden, hätte ich das möglicherweise für mich tun können.
Ich bin mit meinen char*
und *(int*)(someVoidPointer)
Redewendungen einverstanden, aber seit kurzem, nachdem ich einen (kleinen) Beitrag zu einem Open-Source-Projekt geleistet habe, sollte man beim Schreiben von C ++ - Code anders denken. Es ist viel anders als C ist.
In Anbetracht dessen, dass ich mich mit objektorientierter Programmierung ziemlich gut auskenne und mit einer steilen Lernkurve einverstanden bin, was würden Sie mir empfehlen, um mich beim Codieren von C ++ auf die C ++ - Spur einzulassen?
Antworten:
Aufgrund Ihrer Kommentare kennen Sie die C ++ - Syntax.
Sie codieren nicht in C ++, sondern in Klassen, auf die häufig als C Bezug genommen wird.
Das C ++ - Tag für Stackoverflow ist ein guter Ausgangspunkt. Es enthält eine Leseliste und häufig gestellte Fragen .
Der einzige echte Weg zu lernen ist, Code zu schreiben und erfahrene Benutzer zum Kommentieren zu bewegen. Sie können Ihren Code hier zur Überprüfung ablegen. Ein gutes Beispiel
Stoppen Sie die Verwendung, und wechseln Sie zu std :: string.
Verwenden Sie sie nicht mehr (abgesehen von der Schnittstelle mit C-Code). Die Verwendung des Funktorkonzepts bietet mehrere Vorteile (einschließlich der Idee des Kapselungszustands).
Ja. C und C ++ sind als Sprachen auseinander gegangen. Obwohl Sie praktisch dieselbe Syntax verwenden können, wird als guter C-Code im Allgemeinen kein guter C ++ - Code angesehen (oder umgekehrt).
Sie haben die Grundlagen.
Mit viel arbeit :-)
quelle
Das Buch Effective C ++ lehrt eine Reihe interessanter Dinge und bringt Ihnen die Funktionen von C ++ näher. Es gibt auch Effektive STL - Ich habe es nicht gelesen, aber ich bin sicher, es wäre eine gute Lektüre, wenn Sie mit der STD nicht vertraut sind.
Das Wichtigste, was Sie lernen sollten, ist, dass Sie die Sprache verwenden und das Rad nicht ständig neu erfinden . Sie haben bereits gelernt, wie man sie herstellt. Machen Sie es sich (und anderen) leicht und nutzen Sie die Werkzeuge, um ihr gesamtes Potenzial auszuschöpfen.
Als Randnotiz werden Sie auf eine Menge Leute stoßen, die verlangen, dass die STD verwendet wird. Diese Einstellung ist genauso schlecht wie die reine Verwendung
char*
- manchmal ist sie nicht das richtige Werkzeug und es gibt viele andere. Lassen Sie sich im gleichen Sinne nicht davon abhalten, eigene Containerklassen zu erstellen. Wenn Siechar*
den besten Ort dafür verwenden möchten, müssen Sie ihn sicher in eine Klasse einschließen.quelle
Ich kann die jüngste BUILD-Aufnahme von Herb Sutter empfehlen. Der als " Schreiben von modernem C ++ - Code: Wie sich C ++ im Laufe der Jahre entwickelt hat " bezeichnete Code :
Die Präsentation ist nicht schlecht, nicht zu lang. Sie enthält einige nette Hinweise auf die neuen Funktionen des neuesten Standards, die Ihnen einige Hinweise geben, wie Sie Ihren alten C / C ++ - Stil aktualisieren können.
Abgesehen davon müssen Sie die STL lernen - es ist nicht kompliziert und es gibt viele Bücher, z. B. Effektive STL oder nur Google für STL-Tutorials, um Sie zum Laufen zu bringen.
quelle
Ich habe Accelerated C ++ von Andrew Koenig und Barbara Moo gelesen , um C ++ zu unterrichten, nachdem ich fast ein Jahrzehnt mit C ++ gearbeitet hatte. (Tatsächlich fing ich zu dieser Zeit an, Vorlagen-Metaprogramme zu basteln.) Ich fand es immer noch eine Offenbarung, obwohl ich glaube, dass es mir keine neuen Fakten über die Sprache beibrachte. 1
Ich lernte jedoch, C ++ als Hochsprache zu betrachten und zu verwenden. Um nicht mit rohen Zeigern zu basteln
delete
und die Standardbibliothek zu verwenden, wo immer dies möglich ist.Ich habe das Gefühl, dass Sie genau danach suchen.
1 Damals gab es noch nichts, was mir etwas beibrachte (es gibt auch heute noch viel, ein Jahrzehnt später), aber es gibt nur so viel Wissen, das Sie in ein 250-seitiges Einführungsbuch packen können.
quelle
Vor der Beantwortung - eine Anmerkung: Idiomatic C ++ ist ein sich bewegendes Ziel. Wenn sich die Sprache ändert, ändern sich auch ihre Redewendungen. In der Tat ist einige Sprach - Feature soll uns mit idiomatischem Code zu tun , weg ermöglichen , die vereinfacht werden könnten oder mit etwas Unterstützung von der Sprache selbst verbessert oder zumindest die Standard - Bibliothek. Denken Sie also daran, dass jede Quelle Sie nur darüber informieren kann, was zum Zeitpunkt des Schreibens idiomatisch war .
Trotzdem tun Sie gut daran, Folgendes zu überprüfen:
Die codereview.SX Seite
Das StackExchange-Netzwerk verfügt über eine Site mit dem Namen codereview.stackexchange.com . Wenn Sie einen Teil des C ++ - Codes geschrieben haben - eine Klasse, einen Teil einer Bibliothek, etwas, das nicht übermäßig groß ist -, können Sie ihn dort veröffentlichen und die Community bitten, ihn zu überprüfen. Beachten Sie, dass der Code kompiliert werden muss und grundsätzlich funktionsfähig sein muss - diese Site ist nicht für das Debuggen vorgesehen.
Außerdem können Sie dort nach C ++ - Code suchen, der sich auf Ihre Arbeit bezieht, und feststellen, worauf die Überprüfer Wert legen. Sie könnten sogar versuchen, den veröffentlichten Code selbst zu überprüfen, ohne eine Antwort zu hinterlassen, und dann lesen, was andere darüber dachten.
Videopräsentationen für C ++ - Konferenzen
Jedes Jahr finden mehrere Entwicklerkonferenzen zum Thema C ++ statt:
und das sind noch nicht einmal die einzigen ... jedenfalls veröffentlicht jeder dieser Beiträge Videos von vielen / allen Präsentationen. Diese werden Ihnen viel beibringen , einschließlich einiger idiomatischer Kodierungen und Prinzipien, mit denen Sie entscheiden können, was idiomatisch sein soll oder nicht.
Manchmal kann man sogar die Schiebedecks der Lautsprecher bekommen.
quelle
Nun, Open Source-Projekte sind ein sehr guter Anfang. Erwarten Sie nicht, ein professioneller Programmierer zu werden, der auf Ihren Universitätsklassen basiert, sie sind nicht dafür gedacht (wie ich in meiner Antwort hier schrieb ).
Sie scheinen sich der Syntax bewusst zu sein, das ist gut. Lesen Sie jetzt den Code anderer und tragen Sie Ihren eigenen Code für Peer Reviews bei. Sie werden viel lernen, wenn Sie Code lesen und versuchen, ihn zu verstehen, ihn zu debuggen und zu reparieren, und natürlich - indem Sie die bereits vorhandenen Kodierungskonventionen einhalten.
Professionelle Bücher sind, wie bereits erwähnt, ebenfalls eine sehr gute Idee, und das Durchsuchen der Fragen und Antworten auf StackOverflow wird Ihnen viel beibringen.
quelle
Das Lesen von viel gutem C ++ - Code wird wahrscheinlich helfen. Sie müssen den Code sehen, um ein Gefühl dafür zu bekommen. Andererseits ist der Großteil des C ++ - Codes falsch.
quelle