In der Softwareentwicklung bezeichnet der Begriff "immutable" (von engl. unveränderlich) ein Objekt, dessen Zustand nach der Erstellung nicht mehr verändert werden kann. Das heißt, einmal erstellt, bleiben die Daten innerhalb dieses Objekts für dessen gesamte Lebensdauer konstant.
Unveränderliche Objekte sind insbesondere in funktionalen Programmiersprachen wie Haskell oder Clojure ein fundamentales Konzept, aber auch in objektorientierten Sprachen wie Java oder C# können Entwickler immutable Objekte erstellen. Sie sind nützlich, da sie zu einer einfacheren und vorhersagbaren Code-Basis führen und das Verständnis darüber, wie sich die Daten im Laufe der Programmausführung verändern, erleichtern.
Die Unveränderlichkeit bietet verschiedene Vorteile in der Softwareentwicklung:
Unveränderliche Objekte werden üblicherweise durch Wertzuweisung bei der Erstellung initialisiert und bieten keine Methoden an, um ihre Zustände nachträglich zu verändern. In einigen Programmiersprachen, wie Java, lassen sich Klassen als final
deklarieren, um zu signalisieren, dass deren Instanzen nicht verändert werden dürfen. Dort, wo Unveränderlichkeit nicht direkt durch die Sprache unterstützt wird, erfordert sie Disziplin vom Entwickler, um sicherzustellen, dass einmal initialisierte Daten nicht abgeändert werden.
Abschließend lässt sich sagen, dass der Einsatz von immutable Objekten eine wichtige Technik ist, die zu klarerem, robusterem und sichererem Code führen kann. Trotz der vielen Vorteile gibt es auch Situationen, in denen Objekte veränderlich sein müssen, weshalb ein ausgewogener und sachkundiger Einsatz von immutability erforderlich ist.