Je développe une bibliothèque pour une utilisation ultérieure dans d'autres bibliothèques ou produits finaux. Supposons qu'un utilisateur utilise la bibliothèque de manière erronée - en passant une valeur inappropriée à une fonction publique, en appelant des fonctions dans le mauvais ordre, etc.Affirmer vs exception lors du développement de la bibliothèque
Dans ce cas, je peux lancer une exception, mais elles sont généralement conçues pour la version finale. produits et doivent être manipulés de manière appropriée, alors que nous avons ici une erreur de développeur qui n'a pas lu la documentation correctement. D'autre part, il ou elle est l'user de ma bibliothèque et donc l'assertion peut être une mauvaise façon de procéder (imaginez une assertion qui a déclenché dans le code que vous n'avez jamais écrit et que vous attendiez juste de travailler).
Jusqu'à présent, j'ai utilisé affirmations seulement à l'intérieur des fonctions et des méthodes internes privées, ainsi que me notifiant sur mes erreurs à l'intérieur de la bibliothèque. En cas de mauvaise utilisation par les utilisateurs de la bibliothèque, je lance toujours une exception avec une description d'erreur (et des conseils pour l'éviter).
Pensez-vous que ce soit une bonne approche? Si non, quelle règle utilisez-vous pour les assertions et les exceptions lors du développement d'une bibliothèque?
Voir http://stackoverflow.com/questions/117171/design-by-contract-tests- par-assert-ou-par-exception – moala