Je pense qu'il est tout à fait valable d'utiliser des assertions en Ruby. Mais vous mentionnez deux choses différentes :
- Les frameworks xUnit utilisent
assert
des méthodes pour vérifier les attentes en matière de tests. Elles sont destinées à être utilisées dans votre code de test, et non dans votre code d'application.
- Certains langages, comme le C, le Java ou le Python, comprennent une fonction
assert
destiné à être utilisé à l'intérieur du code de vos programmes, pour vérifier les hypothèses que vous faites sur leur intégrité. Ces vérifications sont intégrées au code lui-même. Il ne s'agit pas d'un utilitaire de test, mais d'un utilitaire de développement.
J'ai récemment écrit solid_assert : une petite bibliothèque Ruby implémentant un utilitaire d'assertion Ruby et aussi un billet sur mon blog expliquant sa motivation . Il permet d'écrire des expressions sous la forme :
assert some_string != "some value"
assert clients.empty?, "Isn't the clients list empty?"
invariant "Lists with different sizes?" do
one_variable = calculate_some_value
other_variable = calculate_some_other_value
one_variable > other_variable
end
Et ils peuvent être désactivés, donc assert
y invariant
sont évaluées comme des déclarations vides. Cela vous permet d'éviter les problèmes de performance en production. Mais notez que Le programmeur pragmatique : du compagnon au maître recommande de ne pas les désactiver. Vous ne devez les désactiver que s'ils affectent réellement les performances.
En ce qui concerne la réponse disant que la façon idiomatique de Ruby est d'utiliser un fichier normal raise
Je pense qu'il manque d'expressivité. L'une des règles d'or de la programmation assertive est de ne pas utiliser les assertions pour la gestion normale des exceptions. Il s'agit de deux choses complètement différentes. Si vous utilisez la même syntaxe pour les deux, je pense que votre code sera plus obscur. Et bien sûr, vous perdez la possibilité de les désactiver.
Certains ouvrages très réputés consacrent des sections entières aux assertions et recommandent leur utilisation :
Programmation avec assertions est un article qui illustre bien ce qu'est la programmation assertive. quand l'utiliser (il est basé sur Java, mais les concepts s'appliquent à n'importe quel langage). langage).