Der Hauptgrund Sie Aufträge an private Methoden anwenden wollen würde, wenn Sie die Vorteile der statischen Analyse nehmen sind. Sie schreiben häufig Code, der implizite Annahmen über Ihre privaten Methoden macht (diese Methode gibt z. B. niemals null zurück), und der statische Beweiser weist Sie darauf hin. Sie können dann entweder die Annahme in den Textkörper Ihrer öffentlichen Methode einfügen oder Sie können sie als Vertrag für die private Methode hinzufügen. Letzteres ist in der Regel sauberer, da es Ihnen ermöglicht, die durch den Vertrag implizierte Annahme bei Mehrfachverwendungen dieser privaten Methode wiederzuverwenden.
Persönlich habe ich Code Contracts aufgegeben, bis es eine Chance bekommt, etwas mehr zu reifen. Die Syntax ist umständlich (wir brauchen wirklich eine einfache Darstellung für nicht nullbare Parameter im Besonderen) und Sie können eine Menge von Gyrationen durchmachen, die versuchen, komplizierte Systeme statisch zu beweisen. Es ist jedoch eine sehr gute Idee, und ich denke, es ist nur eine Frage der Zeit, bis eine korrekte Vertragsunterstützung für anspruchsvolle statische Analysen in .NET (CIL-Metadaten) integriert wird, mit Unterstützung für die Muttersprache in C# anstatt als unangenehme Erweiterung .
Eine andere beiseite ist, dass ich denke, es ist sehr wertvoll, den Prozess der Anwendung von Verträgen auf eine kleine Anwendung, von oben nach unten, einschließlich privater und öffentlicher Methoden zu durchlaufen. Während Sie durch den Prozess arbeiten, alles zu beweisen, enthüllt es eine Menge der impliziten Annahmen, die Sie jeden Tag machen, ohne es zu merken. Sie entdecken auch häufig Fehlerfälle, die Sie nie in Erwägung gezogen hätten, da die Denkweise, die Sie beim Erstellen von Verträgen pflegen, die Punkte hervorhebt, an denen Sie Annahmen treffen, und Sie dazu ermutigt, zu überlegen, ob Ihre Annahmen möglicherweise verletzt werden. Ich habe nicht die Zeit, dies für meine täglichen Aufgaben zu tun, aber ich habe definitiv eine Menge aus dem Zeitraum gelernt, in dem ich mit Code Contracts experimentiert habe.
Danke, das ist sehr hilfreich. –