Mit dem aktuellen dotnet-Magazin wurde nun mein erster Artikel zu .Net 4 veröffentlicht. Es geht dabei um die neuen Code Contracts, durch welche Design by Contract [1] in sämtlichen .Net-Sprachen ermöglicht wird. Somit steht dieses Konzept nun erstmalig in einem "Mainstream-Framework" zur Verfügung, was zu einer breiten Akzeptanz führen könnte. Daneben könnten dadurch auch andere Sprachen, wie z. B. Java, animiert werden, dieses Konzept aufzugreifen. Entsprechende Open Source Implementierungen für Java und andere Sprachen stehen übrigens schon seit einiger Zeit zur Verfügung.
Das wirklich tolle an Code Contracts ist, dass es genau genommen eine Implementierung von Verified Design by Contract ist - die Verträge werden also bereits im Zuge einer statischen Analyse (z. B. beim Kompilieren) geprüft. Zusätzlich erfolgt eine Vertragsprüfung zur Laufzeit.
Die Nachteile dieses Konzeptes sollen jedoch auch nicht verschwiegen werden: Zum einen ist es recht schwierig, Code so zu verfassen, dass er auch aus Sicht der Prüfkomponente an die definierten Verträge hält. Zum anderen beansprucht die Typprüfung schon einiges an Zeit im Zuge des Kompilierens bzw. zur Laufzeit. Da Code Contracts jedoch auch nur für bestimmte Codestrecken aktiviert werden kann, besteht die Möglichkeit sie entweder nur für kritische Bereiche oder lediglich im Zuge von automatisierten Builds zum Einsatz kommen zu lassen.
Infos zum Artikel sowie die dazugehörigen Beispiele finden sich unter [2].
[1]
http://de.wikipedia.org/wiki/Design_by_contract[2]
http://it-republik.de/dotnet/dotnet-mag ... 00308.html