Defensive Programming
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 34번째.
방어적 프로그래밍은 null 참조로 인한 오류를 방지하는 데 도움이 되는 기술입니다. 객체를 사용하기 전에 null 값을 확인하는 것을 포함합니다.
객체를 사용하기 전에 null을 확인하세요:
string name = GetNameFromSomewhere();
// Defensive check
if (name == null)
{
// Handle the null case
name = "Default Name";
}
// Now it's safe to use name
Console.WriteLine(name.ToUpper());메서드에서 매개변수 검증:
public void ProcessOrder(Order order)
{
// Defensive check for null parameter
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
// Now safe to process the order
Console.WriteLine("Processing order: " + order.Id);
}더 깔끔한 null 확인을 위해 조건부 접근 연산자(?.)를 사용하세요:
Customer customer = GetCustomerFromSomewhere();
// Instead of:
// string city = null;
// if (customer != null && customer.Address != null)
// {
// city = customer.Address.City;
// }
// Use this:
string city = customer?.Address?.City;챌린지
쉬움ProcessUserData라는 이름의 메서드를 생성하세요. 이 메서드는 문자열 매개변수 userData를 받습니다. 이 메서드는 다음을 수행해야 합니다:
userData가 null인지 확인하세요 - 그렇다면 "Error: User data is null"을 출력하고 반환하세요.userData가 비어 있는지 확인하세요 - 그렇다면 "Error: User data is empty"을 출력하고 반환하세요.- 데이터가 유효하다면 이를 대문자로 변환하고 "Processing: [UPPERCASE_DATA]"를 출력하세요.
치트 시트
방어적 프로그래밍은 객체를 사용하기 전에 null 값을 확인하여 오류를 방지합니다.
객체를 사용하기 전에 null을 확인하세요:
string name = GetNameFromSomewhere();
if (name == null)
{
name = "Default Name";
}
Console.WriteLine(name.ToUpper());메서드에서 매개변수를 검증하세요:
public void ProcessOrder(Order order)
{
if (order == null)
{
Console.WriteLine("Error: Order cannot be null");
return;
}
Console.WriteLine("Processing order: " + order.Id);
}더 깔끔한 null 확인을 위해 조건부 접근 연산자 (?.)를 사용하세요:
Customer customer = GetCustomerFromSomewhere();
string city = customer?.Address?.City;직접 해보기
using System;
class ProcessUserData
{
public static void processUserData(string userData)
{
// 힌트: 문자열 "null"은 실제 null 값으로 처리해야 합니다
// 여기에 코드를 작성하세요
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety