Reflektionen über die Reflection

Woran merkt man, dass jemand schon etwas länger programmiert? Z.B. daran, dass er oder sie bei der ersten Begegnung mit der Reflection im .NET-Framework sich darüber Gedanken macht, ob es wirklich eine gute Idee ist, dieses Feature zu verwenden.

Ich habe viele Jahre lang mit Compiler-basierten Sprachen wie Modula-2 und C++ gearbeitet, wo der Compiler so ziemlich jede Information über das Programm selbst vernichtet und dieses zur Laufzeit über keinerlei „Selbstbewusstsein“ mehr verfügt. Und just als ich unbewusst irgendwie fast das Gefühl bekommen hatte, dass müsse so sein, und ich die fehlende oder mangelhafte Umsetzung von Standards wie RTTI in den gängigen Compilern für C++ mit Gedanken quittierte wie z.B. „konnte ja nicht klappen“, dann kommt das .NET-Framework daher, wo ein Programm so ziemlich alles über sich selbst zur Laufzeit abfragen kann, obwohl natürlich mit Compilern gearbeitet wird.

Meine spontane Reaktion: Zuerst Erstaunen. Dann Skepsis: Hat das wirklich keine Nachteile? Geht nicht die Performance meines Programms in den Keller, wenn ich Reflection einsetze? Blasen all die Meta-Informationen, die ja irgendwo gespeichert sein müssen, nicht die Assemblies zu unanständigen Grössen auf? Besteht nicht sogar eine gewisse Gefahr, dass irgendwann einmal Microsoft hingeht, mir dieses schöne neue Spielzeug namens Reflection wieder wegnimmt und ich dann mit meinem Programm, das ohne nicht mehr auskommt, ganz bös im Regen stehe?

Ich kann vermelden, dass sich meine Skepsis gelegt hat. Der Hauptgrund dafür ist, dass ich mittlerweile einen Überblick habe, wo überall im .NET-Framework selbst Reflection eingesetzt wird. Die Nutzung dieses Mechanismus durchdringt das Framework mehr oder weniger von oben bis unten. Wenn da irgendwelche Haken wären, hätte man das schon längst gemerkt bzw. Microsoft wäre gezwungen gewesen, Probleme schleunigst auszuräumen.

Und wenn man sieht, dass schon beim einfachsten Data Binding eines DataGridView und dem automatischen Generieren von Kolonnen Reflection zum Einsatz kommt, weiss man, dass man die Anwesenheit der Reflection als Selbstverständlichkeit nehmen und ohne Bedenken darauf bauen kann.

Man kann wirklich einige faszinierende Dinge machen mit Reflection, und ich empfehle jedem, der ernsthaft mit dem .NET-Framework arbeiten will, sich die Sache mindestens einmal anzusehen.

Veröffentlicht in Keine Kategorie. Schlagwörter: , . Leave a Comment »

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: