for (const p of people){
if(!found){
if (p === '조커'){
sendAlert();
found = true;
}
}
}
for (const p of people){
if (p === '조커'){
sendAlert();
break;
}
}
- 제어 플래그를 사용하는 코드를 함수로 추출할지 고려한다
- 제어 플래그를 갱신하는 코드 각각을 적절한 제어문으로 바꾼다.
- 모두 수정했다면 제어 플래그를 제거한다.
let found = false;
for (const p of people){
if(!found){
if (p === '조커'){
sendAlert();
found = true;
}
if (p === '사루만'){
sendAlert();
found = true;
}
}
}
- 제어 플래그를 사용하는 코드를 함수로 추출한다.
function checkForMiscreants(people){
let found = false;
for (const p of people){
if(!found){
if (p === '조커'){
sendAlert();
found = true;
}
if (p === '사루만'){
sendAlert();
found = true;
}
}
}
}
- 제어 플래그가 참 일때는 반복문에서 더 이상 수행해야할 동작이 없기 때문에 break나 return을 사용해서 반복문을 벗어난다.
function checkForMiscreants(people){
let found = false;
for (const p of people){
if(!found){
if (p === '조커'){
sendAlert();
return;
}
if (p === '사루만'){
sendAlert();
return;
}
}
}
}
- 제어 플래그 코드도 제거한다.
function checkForMiscreants(people){
for (const p of people){
if (p === '조커'){
sendAlert();
return;
}
if (p === '사루만'){
sendAlert();
return;
}
}
}
function checkForMiscreants(people){
if (people.some(p=>["조커", "사루만"].includes(p))) sendAlert();
}