Wie dieser Entwickler hasse ich auto
. Oder besser gesagt, ich hasse es, wie Menschen missbrauchen auto
.
Ich bin der (starken) Meinung, dass auto
es Ihnen helfen soll, generischen Code zu schreiben, und nicht, die Eingabe zu reduzieren .
C ++ ist eine Sprache, deren Ziel es ist, robusten Code zu schreiben und die Entwicklungszeit nicht zu minimieren.
Dies ist aus vielen Funktionen von C ++ ziemlich offensichtlich, aber leider auto
reduzieren einige der neueren Funktionen, die das Tippen reduzieren, die Leute in die Irre, zu denken, sie sollten anfangen, faul mit dem Tippen zu sein.
In früheren auto
Zeiten verwendeten die Leute typedef
s, was großartig war, weil typedef
der Designer der Bibliothek Ihnen dabei half, herauszufinden, wie der Rückgabetyp aussehen sollte, damit ihre Bibliothek wie erwartet funktioniert. Wenn Sie verwenden auto
, entfernen Sie dieses Steuerelement vom Designer der Klasse und bitten stattdessen den Compiler , herauszufinden, welcher Typ sein soll. Dadurch wird eines der leistungsstärksten C ++ - Tools aus der Toolbox entfernt und es besteht die Gefahr, dass der Code beschädigt wird.
Wenn Sie verwenden auto
, sollte dies im Allgemeinen daran liegen, dass Ihr Code für jeden vernünftigen Typ funktioniert , und nicht daran, dass Sie einfach zu faul sind, den Typ aufzuschreiben, mit dem er funktionieren soll. Wenn Sie auto
als Tool zur Unterstützung der Faulheit verwenden, führen Sie schließlich subtile Fehler in Ihr Programm ein, die normalerweise durch implizite Konvertierungen verursacht werden, die aufgrund Ihrer Verwendung nicht aufgetreten sind auto
.
Leider sind diese Fehler in einem kurzen Beispiel hier nur schwer zu veranschaulichen , da sie aufgrund ihrer Kürze weniger überzeugend sind als die tatsächlichen Beispiele in einem Benutzerprojekt. Sie treten jedoch leicht in vorlagenlastigem Code auf, für den bestimmte implizite Konvertierungen erforderlich sind Ort.
Wenn Sie ein Beispiel möchten, gibt es hier eines . Ein kleiner Hinweis: Bevor Sie versucht sind, den Code zu überspringen und zu kritisieren, denken Sie daran, dass viele bekannte und ausgereifte Bibliotheken um solche impliziten Konvertierungen herum entwickelt wurden und sie vorhanden sind, weil sie Probleme lösen , die schwierig, wenn nicht unmöglich sein können anders zu lösen. Versuchen Sie, eine bessere Lösung zu finden, bevor Sie sie kritisieren.