Ethan Hur's blog

Nodejs legacy function 다루기

2017-07-18

Nodejs 프로젝트를 진행할 때 legacy function 들을 다룰 때가 있다.

이럴 때 불가피하게 parameter 를 수정해야 하는 경우가 있다.

그런데 문제가 되는 것은 callback 때문에 해당 function 이 사용된 전체 코드를 수정해야 할 경우가 있다는 것이다.

그런 일을 피하기 위해 다음과 같이 arguments 를 이용하여 조정해주면 된다.

사실 구조적으로 좋은지는 잘 모르겠지만, legacy code를 다루는 한 가지 방법인 것은 확실한 것 같다.

1
2
3
4
function legacy(a, b, c, callback) {
//do something
}

에서

1
2
3
4
5
6
7
function legacy(a, b, c, d, callback) {
if (arguments.length == 4 && typeof(d) == "function") {
callback = d;
d = false; // 기본값으로 바꾼다.
}
// do something
}

위와 같이 바꾸어주면 된다.

또한, 아래 코드와 같이 검사를 할 때 예외 처리도 잘 해주어야 한다.