함수 세분화는 어떤 Flow를 가진 코드든 시간만 들이면 가능하다고 믿고 있던 찰나, 난관에 봉착했다
반복문 내에 있는
break
나continue
는 어떻게 분리하지?
이미 알고있듯이, break와 continue는 반복문과 같은 함수 내에 선언되어야 동작한다
예제를 보자
// 원본
func iterateLoop() {
for each in total {
...
if each == "No..!" {
continue
}
...
}
}
// 세분화 시도: Error
func iterateLoop() {
for each in total {
play(each: each)
}
}
func play(each: String) {
...
if each == "No..!" {
continue //Error!!
}
...
}
세분화를 시도하였지만 continue는 별도의 함수로 빼낼 수 없다
다행히도,
break
와continue
는if문
을 변형하여 대체할 수 있다
우선continue
를 대체해보자
다시 예제를 보자
// 원본
func iterateLoop() {
for each in total {
...
if each == "No..!" {
continue
}
...
}
}
// 대체: if문을 변형하여 continue를 대체
func iterateLoop() {
for each in total {
...
if each != "No..!" {
...
}
}
}
// 함수세분화: Success
func iterateLoop() {
for each in total {
play(each: each)
}
}
func play(each: String) {
...
if each != "No..!" {
...
}
}
📌 정리하면,
1) if문의 조건을 뒤집고
2) if문 body를 루프 끝까지 확장하도록 변경하면
-> continue
와 동일한 기능을 구현할 수 있다
이제
break
도 대체해보자.
continue보다는 조금 더 변형해야 한다
// 원본
func iterateLoop() {
for each in total {
...
if each == "No..!" {
break
}
...
}
}
// 대체: if문을 변형하고 loop condition을 추가하여 break를 대체
func iterateLoop() {
for each in total where each != "No..!" {
...
if each != "No..!" {
...
}
}
}
// 함수세분화: Success
func iterateLoop() {
for each in total where each != "No..!" {
play(each: each)
}
}
func play(each: String) {
...
if each != "No..!" {
...
}
}
📌 정리하면,
1) if문의 조건을 뒤집고
2) if문 body를 루프 끝까지 확장하도록 변경
3) loop condition을 추가하면
-> break
와 동일한 기능을 구현할 수 있다