12.8 C
Suwon-si
목요일, 11월 21, 2024
HomeDevelopDictionary플래그 변수(Flag 변수)

플래그 변수(Flag 변수)

플래그 변수(Flag 변수)에 대해 알아보고, 이를 정리한다.

플래그 변수(Flag 변수)

 – 프로그래밍에서 사용하는 Flag는 상태를 기록하고 제어하기 위한 boolean type의 변수를 의미.
 – True와 False를 나타내주는 boolean type 변수로서 Toggle 기능 혹은 처리 흐름을 제어할 때 사용하는 Control Flag(제어 플래그) 용도로 사용.
 – 제어 플래그 사용 시 무분별하게 사용할 경우 처리 흐름을 파악하기 힘들어 프로그램 전체를 파악하는데 어려움을 주기도 함.
 – 위와 같은 이유로 제어 플래그 삭제를 하는 리팩토링에 대한 글도 많이 존재하니 참고.
 – 제어 플래그를 삭제하고, break, continue, return 등을 사용하여 코드에 대한 가독성을 향상하는 방법이 주된 리팩토링 방법.
 – 이외에는 return method를 사용하거나, getter, setter를 사용하여 리팩토링을 진행하기도 함.(Flag에 비해 메모리 소모와 같은 부하가 걸리거나 타이밍에 따라 값을 제대로 못 받는 경우도 존재.)
 – 간단한 App이나 Program에서 사용하는 것을 권장.
 – Web이나 Embedded system과 같은 복잡한 환경에서는 Control Flag로 인한 Side Issue 발생 가능성이 존재하여 사용 빈도를 줄이는 것을 권장함.

예시(Example)

1) Flag를 사용하여 짝수 입력 값만 계산.

< Test Source >

public class Flag {
    public static void main(String[] args) {
        int input;
        int result = 0;
        boolean flag = true;

        Scanner scanner = new Scanner(System.in);
        System.out.println("==== Input Only Even Number ====");

        while (flag) {
            input = scanner.nextInt();
            if ((input % 2) == 0) {
                result += input;
            } else {
                System.out.println("======= " + input + " is Odd Number =======");
                flag = false;
            }
        }
        System.out.println("========== Result : " + result + " ==========");
    }
}

 – Scanner를 통해 int값을 받게 한 후, 짝수가 입력되면 계속 값을 더하고, 홀수가 입력되면 반복문을 종료시키는 코드를 작성하였다.

< Result >

==== Input Only Even Number ====
2
4
6
8
10
11
======= 11 is Odd Number =======
========== Result : 30 ==========

 – 결과와 같이 짝수 값이 입력될 경우 반복하여 입력값을 받지만, 홀수 값이 입력될 경우 Flag 변수 값이 true에서 false로 바뀌며 반복문이 종료된다.

2) Control Flag를 사용하지 않고, break로 변경.

public class Flag {
    public static void main(String[] args) {
        int input;
        int result = 0;

        Scanner scanner = new Scanner(System.in);
        System.out.println("==== Input Only Even Number ====");

        while (true) {
            input = scanner.nextInt();
            if ((input % 2) == 0) {
                result += input;
            } else {
                System.out.println("======= " + input + " is Odd Number =======");
                break;
            }
        }
        System.out.println("========== Result : " + result + " ==========");
    }
}

 – 이와 같이 변경하여도 동일한 결과 값이 도출된다.

요약 및 참고(Summary & Reference)

 – Flag 변수(플래그 변수)란, 처리 흐름을 제어하기 위해 사용하는 변수로서 boolean 변수이다. 간단한 소스 코드 혹은 다른 소스와 충돌이 발생할 가능성이 낮을 경우에만 사용하는 것을 추천한다.
– 참고 사이트(https://refactoring.guru/ko/remove-control-flag)

RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Read

Latest Post