
























Die gute Nachricht gleich vorweg: Contracts sind Bestandteil von C++26. Das Standardisierungskomitee hat beim finalen Treffen keine nennenswerten Änderungen mehr vorgenommen. Vorschläge für eine andere Syntax oder ein verringertes Featureset sind vorerst vom Tisch. C++ ist jetzt eine von vielen Sprachen, die Contracts als Sprachmittel anbieten. Eiffel und Ada besitzen das Feature schon lange. Aus Eiffel stammt auch der Begriff Design by Contracts (DbC), der rechtlich geschützt ist.
Die Idee hinter Contracts ist, Nutzenden einer Funktion die möglichen Anforderungen an die Funktionsparameter direkt und in Code mitzuteilen. Damit weiß ein Aufrufer, welche Werte für einen Parameter erlaubt sind. In C++ steht dafür pre zur Verfügung. Auch das Ergebnis einer Funktion lässt sich mit einem Contract auszeichnen. Er gibt eine Garantie für das Resultat und ist durch post angegeben.
enforce, ignore, observe und quick-enforce definieren Verhaltensweisen für den Fall, dass eine Bedingung nicht erfüllt ist.Beides ist nicht neu, jede Funktion hat Anforderungen an ihre Daten. Bisher ließen diese sich in C++ jedoch nur durch Dokumentation mitteilen. Der Nachteil dieses Ansatzes ist, dass Dokumentation und Code auseinanderfallen können und dass Entwickler die Dokumentation finden und lesen müssen. In C++26 werden Contracts direkt in C++-Code dokumentiert, also der Sprache, in der auch entwickelt wird, und ein Programm prüft diese Anforderungen zur Laufzeit.
Das war die Leseprobe unseres heise-Plus-Artikels "Mehr Codekontrolle mit C++26 Contracts". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。