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 null. Elle consiste à vérifier les valeurs null avant d’essayer d’utiliser des objets.
Vérifiez la valeur null avant d’utiliser un objet :
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());Validez 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, il est 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 nullité plus claires :
Customer customer = GetCustomerFromSomewhere();
// Au lieu de :
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Utilisez ceci :
string city = customer?.Address?.City;Défi
FacileCréez une méthode nommée ProcessUserData qui accepte un paramètre chaîne userData. La méthode doit :
- Vérifier si
userDataest null : si c’est le cas, afficher "Error: User data is null" et retourner. - Vérifier si
userDataest vide : si c’est le cas, afficher "Error: User data is empty" et retourner. - Si les données sont valides, les convertir en majuscules et afficher "Processing: [UPPERCASE_DATA]".
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 véritable valeur null
// É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 SafetyEntraînez-vous par vous-même : Compilateur C# en ligne