Programmation défensive
Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 34 sur 66.
La programmation défensive est une technique qui aide à prévenir les erreurs causées par des références nulles. Elle consiste à vérifier les valeurs nulles avant de tenter d'utiliser des objets.
Vérifiez si l'objet est null avant de l'utiliser :
string name = GetNameFromSomewhere();
// Vérification défensive
if (name == null)
{
// Gérer le cas null
name = "Default Name";
}
// Maintenant, il est sûr d'utiliser name
Console.WriteLine(name.ToUpper());Valider les paramètres dans les méthodes :
public void ProcessOrder(Order order)
{
// Vérification défensive pour le paramètre null
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
// Maintenant sûr de traiter la commande
Console.WriteLine("Processing order: " + order.Id);
}Utilisez l'opérateur d'accès conditionnel (?.) pour des vérifications de null plus propres :
Customer customer = GetCustomerFromSomewhere();
// Instead of:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Use this:
string city = customer?.Address?.City;Défi
FacileCréez une méthode nommée ProcessUserData qui accepte un paramètre de type string userData. La méthode doit :
- Vérifiez si
userDataest null - si c'est le cas, affichez "Error: User data is null" et retournez. - Vérifiez si
userDataest vide - si c'est le cas, affichez "Error: User data is empty" et retournez. - Si les données sont valides, convertissez-les en majuscules et affichez "Processing: [UPPERCASE_DATA]".
Aide-mémoire
La programmation défensive prévient les erreurs en vérifiant les valeurs nulles avant d'utiliser des objets.
Vérifiez null avant d'utiliser un objet :
string name = GetNameFromSomewhere();
if (name == null)
{
name = "Default Name";
}
Console.WriteLine(name.ToUpper());Validez les paramètres dans les méthodes :
public void ProcessOrder(Order order)
{
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
Console.WriteLine("Processing order: " + order.Id);
}Utilisez l'opérateur d'accès conditionnel (?.) pour des vérifications null plus propres :
Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;Essayez vous-même
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// Indice : la chaîne "null" doit être traitée comme une valeur null réelle
// Écrivez votre code ici
}
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Tableaux multidimensionnels
Bases des tableaux 2DDéclaration et initialisation en 2DAccès aux éléments d'un tableau 2DBoucles imbriquées et tableaux 2DTableaux irréguliersOpérations matricielles courantesRécapitulatif - Multidimensionnel4Techniques de contrôle de flux
Retours anticipésClauses de gardeInstructions de saut (goto)Break et ContinueAplatir les conditionnelles imbriquées2Prise de décision avancée
Conditions multiplesLogique booléenne complexeComparaison If vs SwitchInstructions Switch imbriquéesRécapitulatif - Décisions avancées5Gestion des exceptions
Bases du Try-CatchTypes d'exceptionsBlocs Catch multiplesManipulation de fichiersLe bloc FinallyUsing vs Try-FinallyExceptions personnaliséesRécapitulatif - Gestion des erreurs3Améliorations des boucles
Performance des bouclesItération de structures complexesChaque type de boucleRefactorisation des bouclesRécapitulatif - Boucles optimisées6Gestion des valeurs nulles
Les bases des références nullesTypes valeur nullablesPatterns de vérification de nullitéProgrammation défensiveRécapitulatif - Null Safety