Skip to main content
2026 Agentblazer 등급이 곧 시작될 예정입니다! 현재 트레일을 완료하시면 누구보다 앞서 나갈 수 있습니다. 업데이트 확인하기

데이터 플로 제어

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • 비교 연산자의 용도를 나열합니다.
  • Switch 문 및 if-else 문 간의 차이점을 이해합니다.

일상에서 결정을 내려야 하는 순간은 언제든지 옵니다. 옷을 어떻게 입을까? 무엇을 먹을까? 왼쪽으로 가야 할까, 오른쪽으로 가야 할까? 코드를 작성할 때도 마찬가지입니다. 유닛 1에서 물을 끓일 때 사용했던 Teatime 의사 코드를 다시 생각해 보세요.

Boil water in a Tea Kettle
Fill Kettle with Water
Switch Kettle On
Wait for Water to Boil

모든 것이 꽤 정확해 보입니다. 물을 끓이기 위해 주전자에 물을 채우고, 주전자를 올린 다음, 물이 끓기를 기다리는 겁니다. 하지만 주전자에 이미 물이 있었다면 어떨까요? 주전자가 꽉 찬 상태라면요? 물을 얼마나 오래 끓여야 할까요?

표현식 및 표현식 연산자

우리는 어떤 결정을 내리기 전에 비교를 하곤 합니다. 이게 저것보다 더 큰지, 동등한지 등을 생각합니다. 개발자들은 애플리케이션에서 결정을 내리기 전에 값을 비교합니다. 코드에서는 두 표현식 사이에 표현식 연산자를 배치하여 표현식을 비교합니다.

표현식은 계산 시 단일 값의 결과가 반환되는 코드조각입니다. 이 모듈의 목적을 위해 표현식은 리터럴 값(예: 12), 변수(예: numberOfTeaCups) 또는 수학 연산(예: 7 x 4)이 될 수 있습니다.

표현식 연산자는 두 값이 같은지 비교하거나 표시합니다. 비교문은 표현식 연산자로 구분된 두 개의 표현식으로 구성되며 true 또는 false의 부울 값을 생성합니다.

비교 연산자

Operator(연산자)

설명

구문

결과

<

다음 값보다 작음

1 < 2

TRUE

<=

다음 값보다 작거나 같음

1 <= 2

3 <= 3

TRUE

==

다음 값과 같음

10 == 10

TRUE

!=

<>

다음 값과 같지 않음

10 != 0

10 <> 11

TRUE

>

다음 값보다 큼

11 > 10

TRUE

>=

다음 값보다 크거나 같음

40 >=10

40 >= 40

TRUE

다음 값과 같음 연산자에는 왜 두 개의 등호가 있을까요? 다음 문에서 하나의 등호를 사용한 것을 떠올려 보세요.

Integer i = 2;

하나의 등호( = )는 할당 연산자로, 값을 할당합니다. 두 개의 등호( == )는 비교 연산자로, 두 값을 비교하여 같은지(true) 또는 같지 않은지(false)를 결정합니다.

연산자는 알려진 값을 변수와 비교하거나 서로 다른 두 변수의 값을 비교할 때 특히 유용합니다.

Integer numberOfTeaCups = 2;
numberOfTeaCups == 3;  //false
numberOfTeaCups == 2; //true

정수 변수와 문자열 변수의 예시를 보았는데, 비교 결과를 보유하는 부울 변수를 만들 수도 있습니다. 다음을 확인해 보세요.

Integer numberOfTeaCups = 2;
Boolean result = numberOfTeaCups > 3; // 2 > 3 = false

줄 1에서는 numberOfTeaCups 변수를 2로 설정합니다.

줄 2에서는 result라는 부울 유형의 변수를 만들고, numberOfTeaCups 변수 값을 숫자 3과 비교한 다음, 비교 결과(false)를 result 변수에 할당합니다.

비교는 특정 항목이 다른 항목과 어떻게 연관되는지를 확인하는 데 도움이 되지만, 무엇보다 조건문 내에서 결정을 내리는 데 큰 도움이 됩니다.

조건문

개발자는 조건문 내의 표현식을 사용하여 프로그램에서 평가하거나 테스트할 하나 이상의 조건을 지정하는 의사 결정 구조를 만듭니다. 내용이 다소 복잡하므로 세부적으로 살펴보겠습니다.

조건문은 두 개 이상의 옵션을 설정합니다. Flow Builder에서 기준을 만들어 본 적이 있다면 조건문을 사용해 본 것입니다. 예를 들어 "주가 캘리포니아와 같을 경우 목록 보기에 레코드를 표시한다"는 조건문입니다. "주가 캘리포니아와 같다"가 조건이고, "목록 보기에 레코드를 표시한다"는 조건이 참일 경우에만 프로그램이 수행하는 작업입니다. 이 예시에는 레코드 표시(명시) 및 레코드 비표시(암시)의 두 가지 옵션이 있습니다.

If-Else 문

Apex에서 일반적으로 사용되는 조건문은 if-else 문입니다. 이 조건문은 다음과 같이 표시됩니다.

if(condition is true) {
    //do this
} else {
    //do this
}

줄 1에서는 조건을 괄호 안에 정의합니다.

줄 2에서는 줄 1의 조건이 참일 경우 실행할 코드를 입력합니다.

줄 3에서는 두 번째 else 옵션을 제시합니다.

줄 4에서는 줄 1의 조건이 거짓일 경우 실행할 코드를 입력합니다.

Apex에서는 조건문을 중괄호({ })에 포함합니다. 각 여는 중괄호({)는 닫는 중괄호(})와 함께 사용되어야 합니다. 코드 블록에 여는 중괄호만 있고 닫는 중괄호가 없을 경우 오류가 발생합니다.

Teatime 의사 코드에서 조건문을 사용하여 찻주전자의 물 높이를 확인하고 이를 기준으로 다음에 수행할 작업을 판단해 보겠습니다.

  1. Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
  2. 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
    String waterLevel = 'full'; /*This variable keeps track of the water level status: full or empty*/
    if(waterLevel == 'empty') {
        System.debug('Fill the tea kettle');
        waterLevel = 'full'; /*Once the tea kettle is filled the variable is changed to full*/
    } else {
        System.debug('The tea kettle is full');
    }
  1. Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
  2. 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.

줄 1에서는 waterLevel 변수를 full로 초기화했습니다. 일반적으로 코드의 변수 값은 코드 자체에서 지정되지 않고 사용자가 입력하거나 다른 데이터에서 파생됩니다. Teatime 예시에서는 주전자의 센서에서 물리적 데이터를 가져와 물 높이를 결정합니다. 하지만 이러한 데이터를 사용할 수 없는 경우, 개발자는 코드를 실행하고 테스트할 수 있도록 코드에서 직접(임시로) 값을 설정합니다. 이렇게 코드에 값을 설정하는 것을 하드 코딩이라고 합니다. 여기서는 테스트 목적으로 waterLevel 변수 값을 full로 하드 코딩했습니다. 값이 이미 설정되었으므로 첫 if 문(줄 3)은 실행되지 않습니다. waterLevel이 empty에서 시작하지 않기 때문입니다.

코드에서는 waterLevel 변수가 empty와 동일한지 확인합니다. waterLevel을 full로 하드코딩했기 때문에 if 문 조건은 false입니다. if 조건이 false인 경우 else 코드 블록이 실행됩니다.

현재 코드는 두 개의 옵션으로 물 높이가 full인 경우와 물 높이가 empty인 경우를 처리합니다. 하지만 이러한 옵션은 단지 가능성일 뿐이며, 주전자가 어느 정도만 채워져 있을 수도 있습니다. 3개 이상의 가능성을 처리하려면 어떻게 해야 할까요?

If-Else If 문

3개 이상의 가능성을 처리하려면 if-else if 문을 사용해 볼 수 있습니다. if-else if 문은 마지막 else 조건 앞에 또 다른 if 조건을 추가합니다. 실제 사용 사례를 살펴보겠습니다.

  1. Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
  2. 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
    String waterLevel = 'half';
    if(waterLevel == 'empty') {
        System.debug('Fill the tea kettle');
        waterLevel = 'full';
    } else if(waterLevel == 'half') {
        System.debug('Fill the tea kettle');
        waterLevel = 'full';
    } else { /*This statement only runs if line 3 and line 6 result in false.*/
        System.debug('The tea kettle is full');
    }
  1. Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
  2. 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.

코드를 테스트할 때 줄 1에 있는 waterLevel 변수의 값을 변경합니다. 이러한 변경 사항은 디버그 로그의 출력에 반영됩니다. half, full, empty의 세 가지 값을 모두 사용해 보세요.

첫 번째 조건이 가장 일반적인 조건이 되도록 조건문을 정렬하세요. 이렇게 정렬하면 코드 블록이 실행될 때마다 실행되는 코드의 양을 줄일 수 있습니다. Teatime 예시에서 주전자는 비어 있을 가능성이 가장 높으므로 해당 조건을 먼저 설정합니다. 찻주전자가 가득 차 있을 가능성은 낮으므로 마지막으로 해당 상태를 확인합니다.

Switch 문

if-else 문의 가장 효과적인 대안은 switch 문입니다. switch 문은 값 집합을 지정하고 표현식을 테스트하여 해당 값 중 하나와 일치하는지 확인합니다. 이 조건문은 다음과 같이 표시됩니다.

switch on expression {
    when value1 {
        //code block 1
    }
    when value2 {
        //code block 2
    }
    when else { //if none of the previous values apply
        //code block 3
    }
}

switch 문에서 when 예약어 뒤에 하나 이상의 값을 배치할 수 있습니다.

switch on expression {
    when value1 { //single value
        //code block 1
    }
    when value2, value3 { //multiple values
        //code block 2
    }
}

Teatime 의사 코드에 switch 문을 적용해 보겠습니다.

  1. Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
  2. 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
    String waterLevel = 'empty';
    //option 1 using a single value
    switch on waterLevel {
        when 'empty' {
            System.debug('Fill the tea kettle');
        }
        when 'half' {
            System.debug('Fill the tea kettle');
        }
        when 'full' {
            System.debug('The tea kettle is full');
        }
        when else {
            System.debug('Error!');
        }
    }
    //option 2 using multiple values
    switch on waterLevel {
        when 'empty', 'half' { //when waterLevel is either empty or half
            System.debug('Fill the tea kettle');
        }
        when 'full' {
            System.debug('The tea kettle is full');
        }
        when else {
            System.debug('Error!');
        }
    }
  1. Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다. 그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
  2. 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.

논리 연산자

두 개 이상의 조건을 어떻게 처리하는지 알아보았습니다. 이제 단일 조건이 둘 이상의 값으로 충족될 수 있는 경우 어떻게 해야 할까요?

논리 연산자

Operator(연산자)

AND

OR

연산 기호

&&

||

의사 코드

If X and Y, do this.

Otherwise, do that.

If X or Y, do this.

Otherwise, do that.

Apex 코드

if(X && Y) {
//do this
} else {
//do this
}
if(X || Y) {
//do this
} else {
//do this
}

논리 연산자 andor를 사용하면 조건이 참인지 거짓인지를 결정하기 위해 둘 이상의 값을 확인하는 코드를 작성할 수 있습니다. and 연산자를 사용하려면 조건을 충족하기 위해 모든 값이 참이어야 합니다. or 연산자를 사용하려면 조건을 충족하기 위해 최소 하나 이상의 값이 참이어야 합니다.

논리 연산자 평가

논리 연산자

구문

설명

&& (AND)

X && Y

System.debug(true && true); // true

System.debug(false && true); //false

System.debug(true && false); // false

System.debug(false && false); //false

X 및 Y는 부울 값입니다. X 및 Y가 모두 참이라면 표현식도 참입니다. 그렇지 않은 경우 표현식은 거짓입니다.

|| (OR)

X || Y

System.debug(true || true); //true

System.debug(false || true); //true

System.debug(true || false); //true

System.debug(false || false); //false

X 및 Y는 부울 값입니다. X 및 Y가 모두 거짓이라면 표현식도 거짓입니다. 그렇지 않은 경우 표현식은 참입니다.

논리 연산자를 사용해 보겠습니다. 다음은 if-else if 문으로 작성된 코드입니다.

String waterLevel = 'half';
if(waterLevel == 'empty') {
    System.debug('Fill the tea kettle');
    waterLevel = 'full';
} else if(waterLevel == 'half') {
    System.debug('Fill the tea kettle');
    waterLevel = 'full';
} else { //This statement only runs if line 3 and line 6 result in false.
    System.debug('The tea kettle is full');
}

줄 4~5와 줄 7~8을 보면 동일합니다. 이를 중복 코드라고 합니다. 이중화를 제거하면 코드가 더 읽기 쉬워지며 이해, 디버그 및 유지 관리도 쉬워지므로 이는 모범 사례입니다. 코드는 waterLevel이 emptyhalf이든 관계없이 동일한 작업을 수행합니다. emptyhalf를 하나의 조건에 함께 사용하여 이 코드를 단순화할 수 있습니다. or 연산자를 사용하여 empty 또는 half 값이 참일 경우 조건을 충족하도록 할 수 있습니다.

  1. Developer Console에서 Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 클릭합니다.
  2. 이 코드를 복사하여 Enter Apex Code(Apex 코드 입력) 창에 붙여 넣습니다.
    String waterLevel = 'half';
    if(waterLevel == 'empty' || waterLevel == 'half') {
        System.debug('Fill the tea kettle');
        waterLevel = 'full';
    } else { //This statement only runs if line 3 false.
        System.debug('The tea kettle is full');
    }
  1. Open log(로그 열기) 확인란을 선택하고 Execute(실행)를 클릭합니다.
    그러면 Execution Log(실행 로그)가 열리며 코드 실행 결과가 표시됩니다.
  1. 창 아래에 있는 Debug Only(디버그만) 확인란을 선택합니다.

한번 보세요. 코드의 이중화를 제거했습니다. 논리 연산자(&&||)를 사용하면 효과적으로 코드의 이중화를 없애고 가독성을 개선할 수 있습니다.

코드를 깔끔하게 만들기

프로그래밍에서는 특정 작업을 수행하는 방법이 두 가지 이상인 경우가 많습니다. 예를 들어 switch 문 또는 if-else 문을 사용하여 동일한 결과를 얻을 수 있습니다. 사용할 문의 유형을 선택할 때 고려해야 할 중요한 사항은 각 문이 코드의 가독성에 미치는 영향입니다. 코드 작업을 계속하다 보면 코드를 깔끔하게 유지하는 방법을 더 많이 배울 수 있습니다. 지금은 코드를 읽고 이해하기 쉽게 만드는 데 집중하세요.

리소스

Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기