프로그램 아키텍쳐/Refactoring

제어 플래그의 삭제(Remove Control Flag)

본클라쓰 2010. 12. 9. 12:24

 

 

플래스(flag)란 ‘깃발’을 의미하지만 프로그래밍에서는 ‘상태를 기록하고 처리의 흐름을 제어하기 위한 boolean형 변수’를 의미한다. 제어 플래그가 반드시 나쁜 것은 아니다. 프로그램에 상태를 기록하는 것은 필요하다. 하지만 제어 플래그를 지나치게 많이 사용하면 처리의 흐름을 이해하기 어려워지므로 프로그램 전체를 이해하기 힘들어지는 위험성이 있다. 제어 플래그 삭제 리팩토링은 플래그를 없애 프로그램을 읽기 쉽게 만들며 제어 플래스 대신 break, countinue, return 등을 사용해 처리의 흐름을 제어한다.

 

 

제어 플래그가 있는 프로그램 코드

boolean flag = true;

 

while (flag) {

    if (condition) { flag = false; }

    else {}

}

 

수정한 프로그램 코드

while (true) {

    if (condition) { break; }

    else {}

}