세계 정복, 2 부
더글러스 Crockford | 있음으로 오후 1시 29분에서 2008, 4월 16일 개발 | 7 개의 댓글프로그래밍으로의 공예품의 관행을 계속 내가이 관행을 오전 내 항상 검토하고 있습니다. 더 좋은 수, 강한 나 향상 명확 프로그램은 내 할 수 패턴을 내가 사용할 수 있도록? 약한 악화, 그리고 혼란 아르 패턴을 호의 이것은 편견을 가지고있다 특히 자바 스크립트와 같은 중요한 일을 할 때 언어.
자바 스크립트 최악의 기능 중 하나는 변수에 대한 세계적인 신뢰는 그. 이것으로 해결할 수있는 글로벌 감소 및 모듈 패턴을 선언해야합니다 우리는 변수의 글로벌 수있는 숫자를 크게 줄일 수 있습니다.
하지만 변수를 글로벌 때 우리가해야 선언, 어떻게 최고의 변수를해야 글로벌 우리가 선포 방법을 제공하는 세 가지? 자바 스크립트, 그리고 그들은 모두 문제가있다. 적어도 최악 어떤가요?
첫 번째는 어떤 함수의 밖에서 새 이름을 지정하는 것입니다.
동정 = {}; / / 첫 번째 형태 두 번째는 사용하는 것입니다 var 어떤 기능의 키워드를 외부.
var에 연민 = {}; / / 두 번째 양식 세 번째는 글로벌 개체의 속성에 할당하는 것입니다.
this.pity = {}; / / 세번째 형태 세 형태는 같은 일을. (묵시 글로벌있다 또한 사분의 일 방법, 흉악한,하지만 우리는 여기서 그 얘기를하지 않습니다. 그리고 방법 여섯째하고 싶은 게 아니 다섯째 날 잡아봐 시작에.)
그럼, 우리가 사용해야하는 같은 일을 할 세 가지가 주어? 내가 방법을 두번째로 사용되는 부탁. 그것은 뭔가를 제안하거나 최소한 (알리는 보았다으로 나를 깨끗한에서 선언하는 의도를 내).
하지만 완전히 만족되지 않았습니다. 첫째, 어떤 사람들은 읽을 var 방식과 유사한, 컴파일 단위의 범위에서 해당 위치로 변수를 선언 static C로 작동이 범위를 단위이 없습니다 컴파일 될 JavaScript는 것을 제외하고 유용한 읽기,. 지식 프로그래머 합니다만, 그것이 알아야의 언어 무지 개발자 프로그램에 웹의 비율은 경고, 그래서 이것은 관심사입니다 가벼운.
더 큰 우려는, 형태 그 두 번째 첫번째보다 형태가 큽니다하지만 일을 반복해 같은. 일반적으로, 난 최소한의 양식을 선호합니다.
하지만 적어도 최악 건입니다 양식이 마침내 확신 날 처음 그 같은 책임감 구조를 사용하고 적응 프로그램이 실패할 때, 그거 IE의 잘못된 형식은 오르 초
var에 연민 = this.pity | | {}; 생산 maximally로하기 위해서, 내가 문제가 이식성이 원하는 기능을 피하기 위해. 그것은 내게 너무 긴 문제는 양식에 동의 둘째했다 피해야해야하므로.
두 번째 양식에 관한 건 내가 좋아하는 고의적 더 많은 것 같았습니다 그것은. 입력하여 var , 나는 철자가 잘못 우발적인 선언이 아니라는 것입니다. 나는 변수를 오전 글로벌 의도적으로 선언 새. 하지만 자바 스크립트가 관심을 지불 아뇨. 아직 코멘트에서 그것을 국가 내 생각은 필요에 그래서, 의도는 그런 상태.
/ / * 글로벌 동정 * 동정 = {};
JSLint도 하고, 코멘트를 그 이해할 수 있습니다 선언 의도적으로 안 변수 내가 할 수있는 경보 세계 어느 날 수 있습니다. 그게 실수를 제공 공통 내게 도는게 아니야 자신감을 제가. 두 번째 형태는하지만 기분 좋은 날 만든 보증을 현실이라 아무 아니 사실은주지 날.
난 아직도 프로그램하는 방법을 배우고 있습니다. 내가 코드를 읽고, 나는 프로그래머의 다른 의견을 고려. 난 아직 관행을 변경할 수있는 능력이 있습니다. 그것은 약한했다는 사례는 이전 내 하드 때로는 것을 인정합니다. 하지만 그것이 강하다고 더 아르 관행을 채택하여보다 오프셋.
공유하고 확장할 수 : 즐겨찾기에 추가 del.icio.us으로 | 그것 Digg에! | reddit!
7 개의 댓글 »
이 게시물에 덧글에 대한 RSS 피드. 트랙백 URI를



테스트가 잠시 동안 내려 왔는데 댓글 시스템. 모든게 정상,에도 불구하고, 한번 풀어주고 다시 보인다!
관리자에 의해 코멘트 - 2008년 4월 21일 #
내가 확인해 지식 것이 일반적인 그것이라고 생각합니다
typeof pity === 'undefined', 대신 같은 구조의를 사용var pity = this.pity || {};, 특히 합리적으로 코드가 그 가정의 부산물입니다 질문 적응 프로그램입니다.그런 다음 한 언어의 무지와 블로그 (또는이 방법을 채택하는 자바 스크립트가 블로그 작가의 독자)의 독자에 프로그램이 상호 배타적하는 웹 개발자 관객 여러분 셋째 양식을 동의하는쪽으로 경향 수도 있다고 가정 경우에 적합 .
하지만, 대부분의 개발자 복사 및 붙여넣기에서 "학습"그런보고, 그것은 두 번째 양식이 그 가증스러운 전역 우리 모두 때문에 싫어한다고 방지하기 위해보다 다른 이유로하는 경우에, 더 안전할 것이라고 보이는군요.
로 댓글 자크의 다용도칼 - 2008년 4월 21일 #
"var에 유감스러운 = this.pity | | {}"와 그것의 변종이 최근 자바 스크립트 라이브러리에 꽤 인기를 끌고있다, 난 혼자 좋아. 당신은 어디에 논리 값이 아닙니다 당신이 예상 값은 장소에 그것을 사용하는 가정에 제공해야합니다.
날 위해 가장 유용 사건 중의 하나는 함수 매개 변수에 대한 기본값으로됩니다. 고려하십시오 :
함수 해봐요 () {
= | | 'defaultValue';
}
변수 '가'여기에 정의되지 않은 경우,이 변수는 ''함수의 나머지 부분에 유용하고, 대신 기본값을 받게됩니다.
당신이 원하는 경우지만, 나는 그것으로 작성 해 보죠 :
함수 해봐요 () {
= (== undefined를 :!? 'defaultValue');
}
에 의해 댓글 Frode Danielsen - 2008 년 5 월 1 #
내가 외부 이번에 영향을받지 않겠다고한다면 [...]가 거짓말 수 있습니다. 더글러스 Crockford 큰 추천을 많이 가지고, 이것은 하나입니다 내가 [...] 동의하는 경향이
로 Pingback scriptNode / 내 새 코딩 습관 - 2008년 8월 2일 #
내가 ExtJS 라이브러리는 이것을 처리하는 방법처럼. 만드는 유틸리티를 제공하여 멀리 떨어진 문제에서 그들은 추상 개발자 '네임 스페이스를. 난 위장이 아래에 그들이 어떤지 정확히 모르겠지만, 더글러스 Crockford의 자바 스크립트 사이트는 자신의 개발에 큰 영향을 미치는가되도록 나는 그들이 위에서 제시 양식 중 하나를 사용하는 것이 찾을 수 놀라지 않을 겁니다. 개발자로서, 그래도 내가 할 일은이 있습니다 :
Ext.namespace ( '유감');
또는이 짧은 형식 :
Ext.ns ( '유감');
난 한 줄에 여러 개의 수준을 선언할 수 있습니다 :
Ext.ns ( '동정', 'pity.util', 'pity.util.text');
Margolis 버니 댓글 작성 - 2008년 11월 19일 #
나는 보통 선호하는 또 다른 형태입니다 :
this.pity | | (this.pity = {});
그 이유는 그 세계는 이미 존재하는 경우와 내가 전달 매개 변수 함수에서 동일한 작업을 수행 그것은 여분의 "동일한 값을"임무를 피할 수 있습니다 :
함수 해봐요 () {
| | (= "defaultValue");
}
목소리를 확산하는 좋은대로 올바른 ...
에 의해 코멘트 디에고 Perini - 2010 년 1 월 29 #
하지만 적어도 최악 건입니다 양식이 마침내 확신 첫째 날 그렇게 실패 잘못된 프로그램은 적응, 그래서 책임감 형태는 두 번째입니다 IE의 도착
내가 IE를 두 번째 양식이 잘못 도착 방법에 대한 정보를 찾을 수가 없었다.
개인적으로, 전 사용하고 :
var fooObj;
if (fooObj === undefined) {
fooObj = {};
}
오레곤에 제이에 의해 코멘트 - 2010년 7월 12일 #