product.JavaScript 코드에 "console.log ()"호출을 두는 것은 나쁜 생각입니까?


Answers

다른 사람들이 이미 지적했듯이, 일부 브라우저에서는 오류를 남겨 두지 만, 일부 스텁을 넣음으로써 오류를 해결할 수 있습니다.

그러나, 나는 그 (것)들을 논평 할 것이나, 철저하게 그 선을 제거 할 것입니다. 다르게하는 것은 엉뚱한 것처럼 보입니다. 아마 나는 현학적인데, "프로덕션"코드에는 "디버그"코드가 주석 형식으로 포함되어야한다고 생각하지 않습니다. 주석을 전혀 남기지 않으면 해당 주석은 코드가 수행하고있는 작업 또는 그 뒤에있는 논리를 설명해야합니다. (대부분의 주석은 귀하의 축소 프로세스에 의해 자동으로 제거되어야하지만, 최소화하고 있습니다.)

또한 JavaScript로 작업 한 지 몇 년 동안 나는 기능으로 돌아와서 "이런, 여기 콘솔 로그를 남기고 싶다"고 회고 할 수는 없습니다. 일반적으로, 내가 함수로 작업을 끝내고 나중에 돌아와야 할 때, 나는 다른 문제를 해결하기 위해 다시 돌아온다. 새로운 문제가 무엇이든간에, 이전의 작업 과정에서 나온 console.log가 도움이 될 수 있었다면 처음으로 문제를 발견했을 것입니다. 다른 말로하면, 내가 다시 무언가로 돌아 왔을 때, 나는 이전에 필요했던 것과 똑같은 디버그 정보를 필요로하지 않을 것 같다.

그냥 내 두 센트 ... 행운을 빌어 요!

Question

내 JavaScript에서 console.log() 호출이 console.log() .

프로덕션 환경에 배포하기 전에 주석 처리해야합니까?

나는 그저 거기에두고 싶다. 그래서 디버깅을 더해야한다면 나중에 주석을 제거 할 필요가 없다. 이것은 나쁜 생각입니까?




다른 사람이 언급했듯이 대부분의 브라우저에서 오류가 발생합니다. Firefox 4에서는 오류가 발생하지 않으며 메시지는 웹 개발자 콘솔 (Firefox 4의 새로운 기능)에 기록됩니다.

내가 좋아했던 그런 실수에 대한 한 가지 해결 방법은 de&&bug 였다.

var de = true;
var bug = function() { console.log.apply(this, arguments); }

// within code
de&&bug(someObject);



나는 다른 시각을 공유 할 것이라고 생각했다. PCI 응용 프로그램에서이 유형의 출력을 외부 세계에 공개하는 것은 비 호환입니다.




그것이 누군가를 돕기를 희망합니다. 나는 그것을 받아 들일 수있는 해결책보다 약간 유연한 래퍼를 작성했습니다.

물론, console.info 등의 다른 메소드를 사용하면 효과를 복제 할 수 있습니다. 준비 환경에서 작업을 끝내면 프로덕션 환경의 기본 C.debug를 false로 변경하면 다른 코드를 변경하거나 줄을 꺼내지 않아도됩니다. 나중에 다시 돌아와 쉽게 디버그 할 수 있습니다.

var C = {
    // console wrapper
    debug: true, // global debug on|off
    quietDismiss: false, // may want to just drop, or alert instead
    log: function() {
        if (!C.debug) return false;

        if (typeof console == 'object' && typeof console.log != "undefined") {
            console.log.apply(this, arguments); 
        }
        else {
            if (!C.quietDismiss) {
                var result = "";
                for (var i = 0, l = arguments.length; i < l; i++)
                    result += arguments[i] + " ("+typeof arguments[i]+") ";

                alert(result);
            }
        }
    }
}; // end console wrapper.

// example data and object
var foo = "foo", bar = document.getElementById("divImage");
C.log(foo, bar);

// to surpress alerts on IE w/o a console:
C.quietDismiss = true;
C.log("this won't show if no console");

// to disable console completely everywhere:
C.debug = false;
C.log("this won't show ever");



내 지식으로는 다음 45 문자보다 console.log 를 더듬는 짧은 방법이 없습니다.

window.console||(console={log:function(){}});

이것은 3 가지 다른 버전 중 첫 번째로, 모든 콘솔 메소드를 스텁하고 싶지만, 모두 작고 모든 것이 IE6 + 및 최신 브라우저에서 테스트되었습니다.

다른 두 버전은 다양한 콘솔 방법을 다룹니다. 하나는 4 가지 기본 사항을 다루고 다른 하나는 방화범과 웹킷에 대한 모든 알려진 콘솔 메소드를 다룹니다. 다시 말하지만 가능한 가장 작은 파일 크기입니다.

이 프로젝트는 github : github.com/andyet/ConsoleDummy.js

어떤 식 으로든 코드를 최소화하는 방법을 생각할 수 있다면 기부금을 환영합니다.

- 수정 - 2012 년 5 월 16 일

이후이 코드를 개선했습니다. 아직 작지만 콘솔 출력을 켜고 끌 수있는 기능이 추가되었습니다. https://github.com/HenrikJoreteg/andlog

그것은 Changelog Show등장했습니다.




Links