Ich war noch nie ein Befürworter der objektorientierten Programmierung, und wenn überhaupt, bin ich umso weniger gewachsen, je mehr ich über das Programmieren im Allgemeinen lerne. Als ich mich mit verschiedenen Programmierparadigmen befasst habe, wurde mir klar, dass Unveränderlichkeit eines der zentralen Konzepte des Programmdesigns ist, das sich auf Software auswirkt, die nach einer beliebigen Philosophie geschrieben wurde. Dies ist bei der funktionalen Programmierung von enormer Bedeutung. Dies hat Auswirkungen auf die Optimierung und die Parallelität, zusätzlich zu den einfachen Sicherheitsgarantien.
Grundsätzlich sollte alles, was unveränderlich sein kann, wahrscheinlich sein, es sei denn, Sie haben einen guten Grund für einen veränderlichen Zustand. Meiner Erfahrung nach führt das Schreiben von Programmen in einer beliebigen Sprache, um dieses Ziel zu erreichen, zu sichererem und besserem Code. Sie haben nichts zu verlieren, wenn Sie es verwenden const
- die Unveränderlichkeit ist kostenlos!
(Im Übrigen habe ich mit der Idee gespielt, einen Fork von GCC für einen Dialekt von C ++ zu erstellen, in dem alle Typen verwendet werden, es const
sei denn, dies wird ausdrücklich als qualifiziert mutable
. Wenn es Unterstützung für so etwas gibt, werde ich mich voll und ganz verpflichten, ihn zu pflegen und zu verwenden.)
Vom OO-Standpunkt aus erzwingt die Unveränderlichkeit die Kapselung, indem ein uneingeschränkter Schreibzugriff verhindert wird. Dies verringert die Kopplung zwischen Klassen, da unveränderliche Objekte ihren eigenen Zustand vollständig verwalten und sich daher wie gewöhnliche Werte verhalten müssen. Die Konstanten-Korrektheit erleichtert den Nachweis der Programmkorrektheit erheblich, insbesondere im Zusammenhang mit der gleichzeitigen Programmierung. Mit der C ++ - Referenz- und der C ++ - R-Wert-Referenzsemantik können Sie unveränderliche Objekte verwenden, ohne sich Gedanken über den Aufwand machen zu müssen, sie überall zu kopieren. Darüber hinaus kann der Compiler einige erstaunliche Optimierungsmagie ausführen, wenn Sie mit größtenteils unveränderlichen Objekten arbeiten.
Ich weiß, es ist scheiße, const
überall zu tippen , aber man gewöhnt sich schnell daran und die Vorteile werden im Laufe der Zeit in Bezug auf Zuverlässigkeit und Wartbarkeit deutlich. Ich bin kein brillanter Schriftsteller, und es scheint eine erwiesene schwierige Aufgabe zu sein, dafür einzutreten, aber ich weiß, dass die Konstanten-Korrektheit für mich als Entwickler beim Entwerfen und Implementieren von Programmen immens hilfreich war, und ich denke, dass dies Erfahrung ist der beste Lehrer in dieser Hinsicht.