In C ++ wirken sich Funktionen wie Ausnahmen auf das gesamte Programm aus: Sie können sie entweder in Ihrem gesamten Programm deaktivieren oder Sie müssen sie im gesamten Code behandeln. Wie ein berühmter Artikel in C ++ Report es ausdrückt:
Gegenintuitiv ist der schwierige Teil der Codierung von Ausnahmen nicht das explizite Werfen und Fangen. Der wirklich schwierige Teil der Verwendung von Ausnahmen besteht darin, den gesamten dazwischenliegenden Code so zu schreiben, dass sich eine beliebige Ausnahme von ihrer Throw-Site zu ihrem Handler ausbreiten kann, ohne dabei andere Teile des Programms zu beschädigen.
Da sogar new
Ausnahmen ausgelöst werden, muss jede Funktion grundlegende Ausnahmesicherheit bieten - es sei denn, sie ruft nur Funktionen auf, die garantieren, dass keine Ausnahmen ausgelöst werden -, es sei denn, Sie deaktivieren die Ausnahmen im gesamten Projekt .
Ausnahmen sind daher ein "Gesamtprogramm" - oder "Gesamtteam" -Feature, da sie von jedem in einem Team, das sie verwendet, verstanden werden müssen. Aber meines Wissens sind nicht alle C ++ - Funktionen so.
Ein mögliches Beispiel ist, dass ich, wenn ich keine Vorlagen erhalte, diese aber nicht verwende, immer noch in der Lage sein werde, korrektes C ++ zu schreiben - oder nicht? Ich kann sogar sort
eine Reihe von ganzen Zahlen aufrufen und deren erstaunlichen Geschwindigkeitsvorteil genießen. C's qsort
(weil kein Funktionszeiger aufgerufen wird), ohne Fehler zu riskieren - oder nicht? Es scheint, dass Templates nicht das ganze Team sind.
Gibt es andere C ++ - Funktionen, die sich auf den Code auswirken, wenn sie nicht direkt verwendet werden, und sind sie daher "ganzes Team"? Ich interessiere mich besonders für Features, die in C nicht vorhanden sind.
Update : Ich bin besonders auf der Suche nach Funktionen, bei denen es kein sprachgesteuertes Zeichen gibt, auf das Sie achten müssen. Die erste Antwort, die ich erhielt, war die Konstanz, die auch das ganze Team betrifft. Daher muss jeder etwas darüber lernen. AFAICS hat jedoch nur dann Auswirkungen auf Sie, wenn Sie eine Funktion aufrufen, die als markiert gekennzeichnet ist const
, und der Compiler verhindert, dass Sie sie für Nicht-Const-Objekte aufrufen, sodass Sie etwas zum googeln erhalten. Mit Ausnahmen bekommt man das nicht einmal; Darüber hinaus werden sie immer verwendet, sobald Sie sie verwenden new
. Daher sind Ausnahmen "heimtückischer". Da ich dies jedoch nicht objektiv formulieren kann, werde ich jedes Feature für das gesamte Team zu schätzen wissen.
Update 2 : Anstelle der C ++ - Funktion hätte ich so etwas wie "C ++ - spezifisches Feature" schreiben sollen, um Dinge wie Multithreading auszuschließen, die für eine große Anzahl gängiger Programmiersprachen gelten.
Anhang: Warum ist diese Frage objektiv (wenn Sie sich fragen)
C ++ ist eine komplexe Sprache, daher versuchen viele Projekte oder Codierungshandbücher, "einfache" C ++ - Features auszuwählen, und viele Leute versuchen, einige nach meist subjektiven Kriterien einzuschließen oder auszuschließen. Fragen dazu werden hier auf SO regelmäßig zu Recht geklärt.
Oben habe ich stattdessen (so genau wie möglich) definiert, was ein "Ganzteam" -Sprachenfeature ist, ein Beispiel (Ausnahmen) zusammen mit umfangreichen Belegen in der Literatur zu C ++ angegeben und nach Ganzteamfeatures in C ++ gefragt über Ausnahmen hinaus.
Ob Sie "Ganzteam" -Funktionen verwenden sollten oder ob dies ein relevantes Konzept ist, mag subjektiv sein - aber das bedeutet nur, dass die Wichtigkeit dieser Frage wie immer subjektiv ist.