✏️10.7 제어 플래그를 탈출문으로 바꾸기 (Replace Control Flag with Break)

리팩터링 전

for (const p of people) {
  if (!found) {
    if (p === "조커") {
      sendAlert();
      found = true;
    }

리팩터링 후

for (const p of people) {
  if (p === "조커") {
    sendAlert();
    break;
}
...

🧷 배경

제어 플래그란 코드의 동작을 변경하는 데 사용되는 변수를 말하며, 어딘가에서 값을 계산해 제어 플래그에 설정한 후 다른 어딘가의 조건문에서 검사하는 형태로 쓰인다.

리팩터링을 통해 간소화할 수 있다.

🧷 절차

  1. 제어 플래그를 사용하는 코드를 함수로 추출할지 고려 한다.

  2. 제어 플래그를 갱신하는 코드 각각을 적절한 제어문으로 바꿈. 하나 바꿀 때마다 테스트한다.

  3. 모두 수정했다면 제어 플래그를 제거한다.

🧷 예시

🧷 리팩터링 전

let found = false;
for (const p of people) {
  if (!found) {
    if (p === '조커') {
      sendAlert();
      found = true;
    }
    if (p === '사루만') {
      sendAlert();
      found = true;
    }
  }
}

🧷 리팩터링 후

checkForMiscreants(people);

function checkForMiscreants(people) {
  for (const p of people) {
    if (p === '조커') {
      sendAlert();
      return;
    }
    if (p === '사루만') {
      sendAlert();
      return;
    }
  }
}

Last updated