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
8
A
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
- 1. Contract.Requires en exception ctor échoue avec erreur CC1027: contrat mal formé
- 2. TagSoup vs Jsoup vs HTML Parser vs vs HotSax
- 3. Accumuler vs plier vs réduire vs compresser
- 4. RailwayJS vs Geddy vs Express vs Socket.IO
- 5. Rhino simulé vs Typemock vs JustMock vs
- 6. codendi vs redmine vs Retrospectiva vs trac
- 7. ZeroMQ vs vs Node.js beanstalkd vs Twisted
- 8. control.BeginInvoke() Vs Dispatcher Vs SynchronizationContext Vs. .. - FIABILITÉ
- 9. inline vs __inline vs __inline__ vs __forceinline?
- 10. méthode vs fonction vs procédure vs classe?
- 11. Location vs GeoPoint vs 1E6 vs Charging
- 12. Papier VS Chevalet VS Tissu vs Kinetic
- 13. Contrats de code: Devons-nous spécifier des instructions Contract.Requires (...) de manière redondante dans les méthodes de délégation?
- 14. et vs * et | vs +
- 15. MPAPI vs MPI.NET vs?
- 16. Mathematica: Unevaluated vs Différer vs vs attente HoldForm vs vs HoldAllComplete etc etc
- 17. .c vs .cc vs vs Cpp .hpp vs vs .h .cxx
- 18. InsertionSort vs InsertionSort vs BinaryInsertionSort
- 19. Modèle vs ControlTemplate vs DataTemplate
- 20. Application vs Service vs Intent
- 21. Boolean vs. Enum vs. Flag
- 22. QT vs wxwidget vs MFC
- 23. Tables vs Div vs Spains
- 24. IPSec vs OpenSSL vs PGP
- 25. cudaStreamSynchronize vs CudaDeviceSynchronize vs cudaThreadSynchronize
- 26. Async vs Handler vs IntentService
- 27. int vs NSNumber vs NSInteger
- 28. Liste vs DataTable vs DataSet
- 29. WsHttpBinding VS WS2007HttpBinding VS WSDualHttpBinding ..?
- 30. CURL vs fopen vs fsocketopen?