Menu
Coddy logo textTech

Guard Clauses

Parte da seção Lógica & Fluxo do Journey de C# da Coddy — lição 19 de 66.

Cláusulas de guarda são instruções condicionais no início de um método que verificam casos de borda ou entradas inválidas e retornam antecipadamente se essas condições forem atendidas.

Vamos criar um método sem uma cláusula de guarda:

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        // Processa o pedido
        // Muitas linhas de código aqui...
    }
}

Agora, vamos reescrevê-lo com uma cláusula de guarda:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        return; // Cláusula de guarda - sai antecipadamente se o pedido for nulo
    }
    
    // Processa o pedido
    // Muitas linhas de código aqui...
}

As cláusulas de guarda melhoram a legibilidade ao reduzir o aninhamento e tratar casos excepcionais no início de um método.

challenge icon

Desafio

Fácil

Crie um método chamado DivideNumbers que recebe dois inteiros, numerator e denominator.

  1. Adicione uma cláusula de guarda para verificar se o denominador é zero.
  2. Se o denominador for zero, imprima: "Cannot divide by zero" e retorne 0.
  3. Caso contrário, divida o numerador pelo denominador e retorne o resultado.

Folha de consulta

Guard clauses (cláusulas de guarda) são declarações condicionais no início de um método que verificam casos extremos ou entradas inválidas e retornam antecipadamente se essas condições forem atendidas.

Sem guard clause:

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        // Processar o pedido
        // Muitas linhas de código aqui...
    }
}

Com guard clause:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        return; // Guard clause - sai antecipadamente se o pedido for nulo
    }
    
    // Processar o pedido
    // Muitas linhas de código aqui...
}

As guard clauses melhoram a legibilidade ao reduzir o aninhamento e lidar com casos excepcionais no início de um método.

Experimente você mesmo

using System;

public class Program
{
    public static int DivideNumbers(int numerator, int denominator)
    {
        // Escreva seu código aqui
    }
    
    public static void Main()
    {
        // Lê as entradas do console
        int numerator = Convert.ToInt32(Console.ReadLine());
        int denominator = Convert.ToInt32(Console.ReadLine());
        
        // Chama o método DivideNumbers
        int result = DivideNumbers(numerator, denominator);
        
        // Imprime o resultado
        Console.WriteLine(result);
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo