ガード節
CoddyのC#ジャーニー「ロジックとフロー」セクションの一部。レッスン 19/66。
Guard clauses は、method の冒頭でエッジケースや無効な inputs を check し、それらの条件が満たされた場合に early に return する条件文です。
ガード句を使わずにメソッドを作成してみましょう:
public void ProcessOrder(Order order)
{
if (order != null)
{
// 注文を処理する
// ここに多くのコード行が...
}
}では、ガード句を使って書き直してみましょう:
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // ガード節 - order が null の場合は早期に終了
}
// order を処理する
// ここに多くのコード行があります...
}Guard clause は、ネストを減らし、method の冒頭で例外的なケースを処理することで、可読性を向上させます。
チャレンジ
簡単numerator と denominator という 2 つの整数を受け取る、DivideNumbers という名前のメソッドを作成します。
- denominator がゼロかどうかを確認する Guard clause を追加します。
- denominator がゼロの場合は、「Cannot divide by zero」と出力して 0 を return します。
- それ以外の場合は、numerator を denominator で割り、result を return します。
自分で試してみよう
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);
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ