Menu
Coddy logo textTech

Flatten Nested Conditionals

Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 22번째.

중첩된 조건문은 코드를 읽기 어렵고 유지보수하기 어렵게 만들 수 있습니다. 평탄화는 들여쓰기 수준을 줄여 가독성을 향상시킵니다.

다음은 깊게 중첩된 조건문의 예입니다:

if (userLoggedIn)
{
    if (userHasPermission)
    {
        if (fileExists)
        {
            // Process the file
            ProcessFile();
        }
        else
        {
            Console.WriteLine("File not found");
        }
    }
    else
    {
        Console.WriteLine("No permission");
    }
}
else
{
    Console.WriteLine("Not logged in");
}

조기 반환 또는 가드 절을 사용하여 이를 평탄화할 수 있습니다:

if (!userLoggedIn)
{
    Console.WriteLine("Not logged in");
    return;
}

if (!userHasPermission)
{
    Console.WriteLine("No permission");
    return;
}

if (!fileExists)
{
    Console.WriteLine("File not found");
    return;
}

// Process the file
ProcessFile();

평탄화된 코드가 들여쓰기가 적고 따라가기 쉬운 점을 주목하세요.

challenge icon

챌린지

쉬움

장학금 자격 확인에서 깊게 중첩된 조건문은 코드를 읽기 어렵고 유지보수하기 어렵게 만듭니다. 이 챌린지에서는 가드 절을 사용하여 지저분한 중첩 조건문 구조를 깔끔하고 읽기 쉬운 코드로 변환합니다.

가드 절은 특정 조건을 즉시 처리하는 조기 반환 문으로, 함수의 나머지 부분이 "happy path"에 집중할 수 있게 합니다.

이 규칙에 따라 CheckScholarshipEligibility 메서드의 부분적으로 구현된 가드 절을 완성하는 것이 작업입니다:

  1. 나이가 17 미만이면 즉시 "Not eligible due to age requirement"를 반환하세요
  2. GPA ≥ 3.5이고 학생이 추천을 가지고 있으면 전액 장학금을 부여하세요
  3. GPA ≥ 3.8이면 전액 장학금을 부여하세요 (추천이 없어도)
  4. GPA ≥ 3.0이고 학생이 추천을 가지고 있으면 부분 장학금을 부여하세요
  5. GPA가 3.5와 3.8 사이이면 부분 장학금을 부여하세요
  6. 모든 다른 경우에는 "Not eligible for scholarship"를 반환하세요

치트 시트

중첩된 조건문은 코드를 읽기 어렵고 유지보수하기 어렵게 만듭니다. 평탄화는 들여쓰기 수준을 줄여 가독성을 향상시킵니다.

깊게 중첩된 조건문 대신:

if (userLoggedIn)
{
    if (userHasPermission)
    {
        if (fileExists)
        {
            // Process the file
            ProcessFile();
        }
        else
        {
            Console.WriteLine("File not found");
        }
    }
    else
    {
        Console.WriteLine("No permission");
    }
}
else
{
    Console.WriteLine("Not logged in");
}

구조를 평탄화하기 위해 조기 반환 또는 가드 절을 사용하세요:

if (!userLoggedIn)
{
    Console.WriteLine("Not logged in");
    return;
}

if (!userHasPermission)
{
    Console.WriteLine("No permission");
    return;
}

if (!fileExists)
{
    Console.WriteLine("File not found");
    return;
}

// Process the file
ProcessFile();

가드 절은 특정 조건을 즉시 처리하는 조기 반환 문장으로, 함수의 나머지 부분이 "happy path"에 집중할 수 있게 합니다.

직접 해보기

using System;

class Program
{
    public static void CheckScholarshipEligibility(int age, double gpa, bool hasRecommendation)
    {
        // 나이 요구사항을 위한 가드 절
        if (age < 17)
        {
            Console.WriteLine("Not eligible due to age requirement.");
            return;
        }
        
        // 추천서가 있는 전액 장학금을 위한 가드 절
        if (/* 이 조건을 완성하세요 */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // 탁월한 GPA로 인한 전액 장학금을 위한 가드 절
        if (/* 이 조건을 완성하세요 */)
        {
            Console.WriteLine("Full scholarship granted!");
            return;
        }
        
        // 추천서가 있는 부분 장학금을 위한 가드 절
        if (/* 이 조건을 완성하세요 */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // 좋은 GPA로 인한 부분 장학금을 위한 가드 절
        if (/* 이 조건을 완성하세요 */)
        {
            Console.WriteLine("Partial scholarship granted.");
            return;
        }
        
        // 기본 케이스: 자격 없음
        Console.WriteLine("Not eligible for scholarship.");
    }
    
    static void Main(string[] args)
    {
        // 즉시 피드백을 위한 테스트 케이스
        Console.WriteLine("Test Case 1: Age 16, GPA 4.0, Has Recommendation: True");
        CheckScholarshipEligibility(16, 4.0, true);
        
        Console.WriteLine("\nTest Case 2: Age 18, GPA 3.9, Has Recommendation: False");
        CheckScholarshipEligibility(18, 3.9, false);
        
        Console.WriteLine("\nTest Case 3: Age 17, GPA 3.6, Has Recommendation: True");
        CheckScholarshipEligibility(17, 3.6, true);
        
        Console.WriteLine("\nTest Case 4: Age 19, GPA 3.2, Has Recommendation: True");
        CheckScholarshipEligibility(19, 3.2, true);
        
        Console.WriteLine("\nTest Case 5: Age 18, GPA 2.8, Has Recommendation: False");
        CheckScholarshipEligibility(18, 2.8, false);
    }
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리 및 흐름의 모든 레슨