Menu
Coddy logo textTech

Defensive Programming

Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 34 de 66.

La programación defensiva es una técnica que ayuda a prevenir errores causados por referencias nulas. Implica verificar valores nulos antes de intentar usar objetos.

Comprobar null antes de usar un objeto:

string name = GetNameFromSomewhere();

// Defensive check
if (name == null)
{
    // Handle the null case
    name = "Default Name";
}

// Now it's safe to use name
Console.WriteLine(name.ToUpper());

Validar parámetros en métodos:

public void ProcessOrder(Order order)
{
    // Comprobación defensiva para parámetro nulo
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    // Ahora es seguro procesar el pedido
    Console.WriteLine("Processing order: " + order.Id);
}

Usa el operador de acceso condicional (?.) para comprobaciones de null más limpias:

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;
challenge icon

Desafío

Fácil

Crea un método llamado ProcessUserData que acepta un parámetro string userData. El método debe:

  1. Verificar si userData es null - si lo es, imprimir "Error: User data is null" y retornar.
  2. Verificar si userData está vacío - si lo es, imprimir "Error: User data is empty" y retornar.
  3. Si los datos son válidos, conviértelos a mayúsculas e imprime "Processing: [UPPERCASE_DATA]".

Hoja de referencia

La programación defensiva previene errores verificando valores nulos antes de usar objetos.

Verificar nulo antes de usar un objeto:

string name = GetNameFromSomewhere();

if (name == null)
{
    name = "Default Name";
}

Console.WriteLine(name.ToUpper());

Validar parámetros en métodos:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    Console.WriteLine("Processing order: " + order.Id);
}

Usar el operador de acceso condicional (?.) para verificaciones de nulo más limpias:

Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;

Pruébalo tú mismo

using System;

class ProcessUserData
{
    public static void processUserData(string userData)
    {
        // Pista: la cadena "null" debe tratarse como un valor null real
        
        // Escribe tu código aquí
    }
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo