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"를 반환하세요

직접 해보기

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실력 점검

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

논리 및 흐름의 모든 레슨