Guard Clauses
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 19번째.
가드 클로즈(Guard clauses)는 메서드 시작 부분에서 예외 케이스나 유효하지 않은 입력을 확인하고, 해당 조건이 충족되면 조기에 반환하는 조건문입니다.
가드 절(guard clause)이 없는 메서드를 만들어 보겠습니다:
public void ProcessOrder(Order order)
{
if (order != null)
{
// 주문 처리
// 여기에 많은 코드 줄이 있음...
}
}이제 가드 클로즈(guard clause)를 사용하여 다시 작성해 보겠습니다:
public void ProcessOrder(Order order)
{
if (order == null)
{
return; // 가드 클로즈 - order가 null인 경우 조기에 종료합니다
}
// 주문 처리
// 여기에 많은 코드 라인이 위치함...
}가드 클로저(Guard clauses)는 메서드 시작 부분에서 예외적인 케이스를 처리하고 중첩을 줄임으로써 가독성을 향상시킵니다.
챌린지
쉬움두 개의 정수 numerator와 denominator를 매개변수로 받는 DivideNumbers라는 메서드를 생성하세요.
- 분모가 0인지 확인하는 가드 클로즈(guard clause)를 추가하세요.
- 분모가 0이면 "Cannot divide by zero"를 출력하고 0을 반환하세요.
- 그렇지 않으면 numerator를 denominator로 나누고 그 결과를 반환하세요.
치트 시트
가드 클로즈(Guard clauses)는 메서드 시작 부분에서 예외적인 상황이나 유효하지 않은 입력을 확인하고, 해당 조건이 충족되면 조기에 반환하는 조건문입니다.
가드 클로즈가 없는 경우:
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);
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
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