Ich habe bemerkt, dass Microsoft ihre Code-Vertrag-relativen Funktionen in .NET 4 auf seltsame Weise benannt hat.
Sie fügen "s" am Ende von "require" und "secure" hinzu, also gibt es Contract.Requires () und Contract.Ensures (), aber nicht am Ende von "assert" und "assume", also Es gibt Contract.Assert () und Contract.Assume (). Der Unterschied macht mich ein wenig verwirrt.
Tatsächlich ist mein wirkliches Problem, ich versuche Code-Contract in PHP zu verwenden, also schreibe ich etwas, um die "Contract" -Klasse in .NET 4 zu imitieren. Da PHP keine eingebaute Methode hat, den Typ zu validieren Ich füge eine Methode zu meiner eigenen Contract-Klasse hinzu, um eine Validierung durchzuführen. Ich wähle das Wort "expect", weil ich denke, dass "Parameter 'bar' String sein soll, aber ..." ist eine häufige Meldung, wenn der Parametertyp falsch ist. Und da kommt das Problem. Sollte ich meine Methode Contract.Expect () nennen oder sollte ich sie Contract.Expects () nennen?
Ich komme aus einem nicht englischsprachigen Land, es tut mir so leid für mein schlechtes Englisch. Vielleicht ist es eine englischsprachige Frage, aber ich denke nur Programmierer können mir helfen. Tut mir leid, wenn diese Frage hier nicht passt.
Ich glaube, dass Ensures
und Requires
beschreiben, welche Methoden benötigen und / oder garantieren , während Assert
und Assume
Befehle für den Vertragsprüfer sind .
Oder mit anderen Worten, die ersten beiden beschreiben Vorbedingungen / Nachbedingungen über die äußere Schnittstelle der Methode , während die letzten beiden nur Metadaten sind, die dem Vertragsverifizierer helfen, seine Arbeit für Sie innerhalb der Methode . Einer ist für den Benutzer relevant, der andere jedoch nicht.