`deprecate` 구현하기


발생일: 2013.11.20

문제:
프라미스 패턴 구현체 중 하나인 `Q` 라이브러리(https://github.com/kriskowal/q) 코드를 보다보니,
`deprecated` 된 API를 구현하는 좋은 아이디어가 있어 메모해둔다.


해결책:

Q 라이브러리는 어떤 API가 deprecated 되었을 때 아래와 같이 구현하고 있다.

promise.valueOf = deprecate(function () {
    if (messages) {
        return promise;
    }
    var nearerValue = nearer(resolvedPromise);
    if (isPromise(nearerValue)) {
        resolvedPromise = nearerValue; // shorten chain
    }
    return nearerValue;
}, "valueOf", "inspect");


`promise.valueOf()`를 호출하면,
'valueOf는 deprecate 되었으니 inspect를 사용하라'는 콘솔 워닝이 뜬다.

원본 메서드는 그대로 두고, `deprecate()`로 묶어 새 API에 대한 가이드를 주는 아이디어가 좋다.
`deprecate()` 함수는 아래와 같이 생겼다.

function deprecate(callback, name, alternative) {
    return function () {
        if (typeof console !== "undefined" &&
            typeof console.warn === "function") {
            console.warn(name + " is deprecated, use " + alternative +
                         " instead.", new Error("").stack);
        }
        return callback.apply(callback, arguments);
    };
}



카테고리

분류 전체보기 (730)
About me. (6)
Daylogs (695)
영어공부 (0)
My works - 추억 (29)
비공개 (0)