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 Defensive es una técnica que ayuda a prevenir errores causados por referencias null. Consiste en comprobar si hay valores null antes de intentar utilizar objetos.
Comprueba si es null antes de usar un objeto:
string name = GetNameFromSomewhere();
// Verificación defensiva
if (name == null)
{
// Manejar el caso nulo
name = "Default Name";
}
// Ahora es seguro usar name
Console.WriteLine(name.ToUpper());Valida los parámetros en los métodos:
public void ProcessOrder(Order order)
{
// Comprobación defensiva del parámetro null
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 realizar comprobaciones de null más limpias:
Customer customer = GetCustomerFromSomewhere();
// En lugar de:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Usa esto:
string city = customer?.Address?.City;Desafío
FácilCrea un método llamado ProcessUserData que acepte un parámetro string userData. El método debe:
- Comprobar si
userDataes null; si lo es, imprimir "Error: User data is null" y hacer return. - Comprobar si
userDataestá empty; si lo está, imprimir "Error: User data is empty" y hacer return. - Si los datos son valid, convertirlos a mayúsculas e imprimir "Processing: [UPPERCASE_DATA]".
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í
}
}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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null SafetyPractica por tu cuenta: Compilador de C# online