Menu
Coddy logo textTech

Guard Clauses

CoddyのC#ジャーニー「ロジックとフロー」セクションの一部 — レッスン 19/66。

ガード節は、メソッドの冒頭にある条件文で、エッジケースや無効な入力をチェックし、それらの条件が満たされた場合に早期リターンするものです。

ガード節のないメソッドを作成してみましょう:

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        // 注文を処理する
        // ここに多くのコード行が続きます...
    }
}

では、ガード節を使って書き換えてみましょう:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        return; // ガード節 - orderがnullの場合は早期に終了する
    }
    
    // 注文を処理する
    // ここに多くのコードが続く...
}

ガード節は、メソッドの冒頭で例外的なケースを処理し、ネストを減らすことで、可読性を向上させます。

challenge icon

チャレンジ

簡単

2つの整数numeratordenominatorを受け取る、DivideNumbersという名前のメソッドを作成してください。

  1. 分母がゼロかどうかをチェックするガード節を追加してください。
  2. 分母がゼロの場合、"Cannot divide by zero"と出力し、0を返してください。
  3. それ以外の場合は、分子を分母で割り、その結果を返してください。

チートシート

ガード節は、メソッドの冒頭にある条件文で、エッジケースや無効な入力をチェックし、それらの条件が満たされた場合に早期リターンを行うものです。

ガード節がない場合:

public void ProcessOrder(Order order)
{
    if (order != null)
    {
        // 注文を処理する
        // ここに多くのコード行が続く...
    }
}

ガード節がある場合:

public void ProcessOrder(Order order)
{
    if (order == null)
    {
        return; // ガード節 - orderがnullの場合は早期に終了する
    }
    
    // 注文を処理する
    // ここに多くのコード行が続く...
}

ガード節は、ネストを減らし、メソッドの冒頭で例外的なケースを処理することで、可読性を向上させます。

自分で試してみよう

using System;

public class Program
{
    public static int DivideNumbers(int numerator, int denominator)
    {
        // ここにコードを書いてください
    }
    
    public static void Main()
    {
        // コンソールから入力を読み込む
        int numerator = Convert.ToInt32(Console.ReadLine());
        int denominator = Convert.ToInt32(Console.ReadLine());
        
        // DivideNumbers メソッドを呼び出す
        int result = DivideNumbers(numerator, denominator);
        
        // 結果を表示する
        Console.WriteLine(result);
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン