防御的プログラミング
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;チャレンジ
簡単ProcessUserData という名前のメソッドを作成し、string パラメーター userData を受け取るようにします。このメソッドは次の処理を行う必要があります。
userDataが null かどうかを確認します。null の場合は、"Error: User data is null" と出力して return します。userDataが empty かどうかを確認します。empty の場合は、"Error: User data is empty" と出力して return します。- data が valid の場合は、大文字に変換して "Processing: [UPPERCASE_DATA]" と出力します。
自分で試してみよう
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// ヒント: 文字列 "null" は実際の null 値として扱う必要があります
// ここにコードを書いてください
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ