Eignung von C# für große Softwareprojekte
Bei großen Softwareprojekten geht es vor allem darum, die Komplexität
in den Griff zu bekommen. Man erreicht das, indem man den Überblick über die Software
bewahrt und Komplexes hinter einfachen Schnittstellen verbirgt.
Folgende Sprachmittel helfen einem dabei:
-
Klassen fassen Daten und dazugehörige Operationen zu einer Einheit
zusammen. Komplexe Algorithmen und Datenstrukturen können hinter
einfachen Methodenschnittstellen verborgen werden (Information Hiding).
Neben Methoden helfen auch Properties und Indexer bei der Datenabstraktion.
-
Namensräume fassen verwandte Klassen und andere Typen
zu größeren Einheiten zusammen und helfen so besonders
in großen Projekten Ordnung zu schaffen.
-
Interfaces erlauben es, von der konkreten Implementierung
eines Bausteins zu abstrahieren und sich ganz auf seine Schnittstelle
zu konzentrieren. Ein und dieselbe Schnittstelle kann von ganz
unterschiedlichen Klassen implementiert werden, die dann auf dieselbe
Art benutzt werden können.
-
Die objektorientierten Eigenschaften von C# (v.a. Vererbung
und dynamische Bindung) unterstützen die Wiederverwendung und
Erweiterbarkeit von Software. Dadurch muss nicht jedes Software-Projekt
bei Null beginnen.
-
Typsicherheit. Die strenge Typprüfung zur Compilezeit
fängt bereits viele Programmierfehler ab. Der Garbage Collector
garantiert zur Laufzeit, dass Objekte weder zu früh noch zu spät
freigegeben werden. Dadurch werden lästige Fehler vermieden.
Typumwandlungen werden zur Laufzeit geprüft. Ungültige
Arrayindizierungen und Zugriffe über null-Referenzen werden
ebenfalls erkannt. Dadurch wird ein Softwareprojekt nicht zu einem
Hochseilakt ohne Netz.
-
Assemblies tragen eine Versionsnummer. Dadurch wird sichergestellt,
dass zur Laufzeit die korrekten Versionen von Softwareteilen geladen werden,
d.h. jene, mit denen der Compiler seine Typprüfungen durchgeführt
hat. Die Möglichkeit, Assemblies zu signieren, macht Viren das Leben schwer.
|