ASSERT |
Affirmez |
|---|---|
Perl |
POSIX |
Syntaxe
| sub POSIX::assert($expression); |
Paramètres
| Nom | Description |
|---|---|
| $expression | Ce paramètre permet d'indiquer l'assertion |
Description
Cette fonction permet de vérifier le programme. Officiellement, cette fonction ne fonctionne pas. Par contre, vous pouvez utiliser la fonction die ou le module Carp pour effectuer des tâches similaires.
Remarques
- Fonction présente mais non fonctionnelle en pratique : Bien que POSIX::assert soit définie dans l'espace de noms POSIX de Perl, elle ne fonctionne pas comme prévu. En réalité, elle ne déclenche pas d'erreur ou de message si l'expression est fausse, contrairement aux assertions classiques des langages comme C ou Python.
- Une fonction déclarée mais inutilisable : La documentation officielle indique explicitement que cette fonction ne fonctionne pas dans les implémentations Perl courantes. Cela signifie qu'elle est présente pour des raisons de compatibilité POSIX, mais sans effet réel lors de l'exécution du code.
- Peut induire en erreur les développeurs non avertis : Le simple fait que POSIX::assert soit définie peut tromper les développeurs, qui penseront qu'elle agit comme une assertion standard. Cela peut mener à des erreurs silencieuses si on s'appuie sur elle pour valider des préconditions critiques.
- La bonne alternative est die() ou croak() : Pour simuler un comportement d'assertion en Perl, il est recommandé d'utiliser die ou croak (du module Carp) avec une condition explicite, par exemple :
- Utile uniquement pour signaler une intention : Même si elle n'a pas d'effet, l'appel à POSIX::assert($expr) peut servir de documentation dans le code pour indiquer qu'une condition doit toujours être vraie. C'est donc plus un repère pour les développeurs qu'un mécanisme de validation.
- Pas équivalente à assert() en C : Dans le langage C, assert() provoque une interruption de programme si l'expression est fausse. En Perl, cette version POSIX ne réplique pas ce comportement, ce qui confirme son inutilité dans un contexte de vérification automatique.
- Le module Test::More propose des alternatives robustes : Dans les contextes de test, il est préférable d'utiliser des modules comme Test::More, offrant des fonctions comme ok() ou is(), permettant de formuler des assertions fiables avec rapport détaillé. Cela est bien plus puissant et adapté au langage.
- Reflète une inclusion symbolique pour respecter POSIX : La présence de POSIX::assert dans Perl est symbolique, destinée à refléter la correspondance avec les appels de la norme POSIX. Elle n'est pas censée être utilisée directement et n'a pas de rôle opérationnel réel dans les programmes Perl modernes.
Cela permet de forcer l'arrêt du programme en cas de violation logique.
Voir également
Langage de programmation - Fonction C pour Linux - assert
Dernière mise à jour : Dimanche, le 18 octobre 2015