Menu
Coddy logo textTech

防御的プログラミング

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

Defensiveプログラミングは、null参照によって引き起こされるエラーを防ぐのに役立つ手法です。オブジェクトを使用しようとする前に、null値をチェックします。

オブジェクトを使用する前に null をチェックします。

string name = GetNameFromSomewhere();

// 防御的チェック
if (name == null)
{
    // null の場合を処理する
    name = "Default Name";
}

// これで name を安全に使用できる
Console.WriteLine(name.ToUpper());

メソッド内でparameterを検証する:

public void ProcessOrder(Order order)
{
    // nullパラメータに対する防御的チェック
    if (order == null)
    {
        Console.WriteLine("Error: Order cannot be null");
        return;
    }
    
    // これで注文を安全に処理できる
    Console.WriteLine("Processing order: " + order.Id);
}

より簡潔な null チェックには、条件付きアクセス演算子 (?.) を使用します。

Customer customer = GetCustomerFromSomewhere();

// 代わりに:
// string city = null;
// if (customer != null && customer.Address != null)
// {
//     city = customer.Address.City;
// }

// これを使用:
string city = customer?.Address?.City;
challenge icon

チャレンジ

簡単

ProcessUserData という名前のメソッドを作成し、string パラメーター userData を受け取るようにします。このメソッドは次の処理を行う必要があります。

  1. userData が null かどうかを確認します。null の場合は、"Error: User data is null" と出力して return します。
  2. userData が empty かどうかを確認します。empty の場合は、"Error: User data is empty" と出力して return します。
  3. data が valid の場合は、大文字に変換して "Processing: [UPPERCASE_DATA]" と出力します。

自分で試してみよう

using System;

class ProcessUserData
{
    public static void processUserData(string userData)
    {
        // ヒント: 文字列 "null" は実際の null 値として扱う必要があります
        
        // ここにコードを書いてください
    }
}
quiz icon腕試し

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

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

自分で練習してみよう: C#オンラインコンパイラ