RUBRIQUES
Expliquez-moi
18/09/2007
La programmation défensive
La programmation défensive est un état d'esprit qui consiste à écrire son code de façon à s'attendre au pire. Le fait est que le programmeur peut insérer des fautes non détectées ou des inconsistances. Pour s'en prémunir, il faut prévoir un traitement pour les fautes : soit en ajoutant du code vérifiant l'état du système, soit par un traitement d'erreur classique. Dans l'idéal, il faudrait penser à toutes les sources d'erreurs possibles et prévoir un traitement pour chacune d'elles. En outre, la programmation défensive permet de faire de la tolérance aux fautes. Elle a pour but d'empêcher l'apparition d'une défaillance en agissant sur les effets et non sur les causes. Un autre but de cette méthode est de pouvoir défendre le programme d'utilisateurs malveillants, en s'assurant par exemple que le fichier entré par l'utilisateur est bien valide. Un programme sale ou peu soigné peut engendrer des erreurs ou des bugs. C'est là que les fautes sont bien souvent insérées. Il est conseillé de faire attention à la clarté du programme. Voici des pistes de réflexion :Les erreurs les plus courantes : » Valeur invalide ; exemple : valeur négative pour une durée ;
Un programme sale Un programme est peu soigné quand :
Eléments de solutions Nous avons vu les erreurs et les sources potentielles de ces erreurs et maintenant voici quelques astuces pour parvenir à les combattre. Elles consistent en de bons automatismes et en l'utilisation d'assertions. Les bons automatismes permettent de ménager sa mémoire en appliquant des règles d'écriture.
» Utiliser à peu près les mêmes noms de variable pour définir les mêmes objets.
Les assertions sont des points de vérification des propriétés fondamentales de l'objet. Un prédicat est placé dans un programme de façon à ce qu'il soit toujours vrai à cet endroit. Ainsi, une assertion correspond à une expression booléenne, que le développeur déclare devoir être vraie pour qu'une routine se lance. (Voir : Java : les assertions)
|
Par Thomas Thelliez, (RocketBootstrapper.com) Lire
Par Thomas Arnaud, (Nudge) Lire