Introduire une assertion.
Pour qu'une portion de code fonctionne correctement, certaines conditions ou valeurs doivent être vraies.
Remplacez ces hypothèses par des vérifications d'assertion explicites.
##Example
double getExpenseLimit() {
// Devrait avoir soit une limite de dépenses,
// soit un projet principal.
return (expenseLimit != NULL_EXPENSE) ?
expenseLimit :
primaryProject.getMemberExpenseLimit();
}double getExpenseLimit() {
Assert.isTrue(expenseLimit != NULL_EXPENSE || primaryProject != null);
return (expenseLimit != NULL_EXPENSE) ?
expenseLimit:
primaryProject.getMemberExpenseLimit();
}##Why Refactor
Supposons qu'une portion de code fasse une hypothèse, par exemple, sur l'état actuel d'un objet ou sur la valeur d'un paramètre ou d'une variable locale. Habituellement, cette hypothèse sera toujours vraie, sauf en cas d'erreur.
Rendez ces hypothèses explicites en ajoutant les assertions correspondantes. Comme pour le typage des paramètres de méthode, ces assertions peuvent servir de documentation vivante pour votre code.
Pour repérer où votre code a besoin d'assertions, recherchez les commentaires qui décrivent les conditions dans lesquelles une méthode donnée fonctionnera.
##Benefits
- Si une hypothèse est fausse et que le code produit donc un résultat erroné, mieux vaut arrêter l'exécution avant que cela n'entraîne des conséquences fatales et une corruption des données. Cela signifie aussi que vous avez omis d'écrire un test nécessaire lorsque vous avez conçu les modalités de test du programme.
##How to Refactor
Lorsque vous constatez qu'une condition est supposée vraie, ajoutez une assertion pour cette condition afin de vous en assurer.
L'ajout de l'assertion ne devrait pas modifier le comportement du programme.
N'abusez pas des assertions pour tout dans votre code. Ne vérifiez que les conditions nécessaires au bon fonctionnement du code. Si votre code fonctionne normalement même lorsqu'une assertion donnée est fausse, vous pouvez la supprimer sans risque.