2011-04-23 1 views
8

J'ai remarqué que Microsoft nommait leurs fonctions relatives au contrat de code dans .NET 4 d'une manière étrange. Ils ajoutent "s" à la fin de "require" et "Ensure", donc il y a Contract.Requires() et Contract.Ensures(), mais pas à la fin de "assert" et "assume", il y a donc Contract.Assert() et Contract.Assume(). La différence me rend un peu confus. En fait, mon vrai problème est que j'essaie d'utiliser le code-contrat en PHP, donc j'écris quelque chose pour imiter la classe "Contract" dans .NET 4. Puisque PHP n'a pas de méthode intégrée pour valider le type de paramètres, j'ajoute une méthode à ma propre classe de contrat pour faire une validation. Je choisis le mot "attendre", parce que je pense que "le paramètre 'barre' est une chaîne mais ..." est un message commun quand le type de paramètre est faux. Et il y a le problème. Dois-je nommer ma méthode Contract.Expect() ou devrais-je la nommer Contract.Expects()? Je viens d'un pays non anglophone, donc désolé pour mon mauvais anglais. Peut-être que c'est en fait une question en anglais, mais je pense que seuls les programmeurs peuvent m'aider. Donc désolé pour cela si cette question n'est pas correcte ici.Contract.Requires vs Contract.Require

Répondre

15

Je crois Ensures et Requires sont décrivant les méthodes ont besoin et/ou garantie, alors que Assert et Assume sont commandes au vérificateur de contrat.

Ou en d'autres termes, les deux premiers décrivent préconditions/postconditions à propos interface externe de la méthode, alors que les deux derniers sont les méta-données pour aider le vérificateur de contrat faire son travail pour vous dans la méthode. L'un est pertinent pour l'utilisateur, mais l'autre ne l'est pas.

Questions connexes