머리말
좋은 JavaScript 작문 습관의 장점은 자명합니다. 오늘날 Bin Go는 Dojo JavaScript 프로그래밍 사양을 귀하에게 추천합니다. JavaScript를 작성하기 위해이 사양에서 배우는 것이 좋습니다. 번역에 대한 i.feelinglucky에게 감사합니다.
순서
이 가이드에 대한 모든 폭력은 가독성을 높이면 허용됩니다.
모든 코드는 다른 코드를 쉽게 읽을 수 있어야합니다.
빠른 읽기 참조
Core API 다음 스타일을 사용하십시오.
| 구조 | 규칙 | 의견 |
| 기준 치수 | 소문자 | 여러 의미를 사용하지 마십시오 (여러 단어는 없습니다) |
| 친절한 | 낙다 | |
| 공개 방법 | 혼합 | 다른 외부 통화 |
| 공개 변수 | 혼합 | |
| 끊임없는 | 낙타 또는 수도 |
다음은 필요하지 않지만 사용하는 것이 좋습니다.
| 구조 | 규칙 |
| 개인 방법 | 혼합, 예 : _mixedcase |
| 개인 변수 | 혼합, 예 : _mixedcase |
| 메소드 매개 변수 | 혼합, 예 : _mixedcase, Mixedcase |
| 로컬 변수 | 혼합, 예 : _mixedcase, Mixedcase |
명명 사양
1. 변수 이름은 소문자 여야합니다.
2. 클래스 이름 지정은 낙타 명명 규칙을 사용합니다.
계정, 이벤트 핸들러
3. 상수는 객체 (클래스) 또는 열거 변수의 전면에 선언되어야합니다. 열거 변수의 이름 지정은 실질적인 의미를 가져야하며, 그 구성원은 낙타 명명 규칙을 사용하거나 대문자를 대비해야합니다.
코드 사본은 다음과 같습니다.
var nodetypes = {
요소 : 1,
문서 : 2
}
4. 약식 단어는 자본 이름을 변수 이름으로 사용할 수 없습니다.
getInnerHtml (), getxml (), xmldocument
5. 방법의 명령은 동사 또는 동사 문구 여야합니다.
obj.getSomeValue ()
6. 공개 클래스의 이름 지정은 혼합 이름 (Mixedcase)을 사용하여 명명되어야합니다.
7. CSS 변수의 이름은 해당 동일한 공개 클래스 변수를 사용해야합니다.
8. 개인 클래스의 변수 속성 멤버는 혼합 이름 (혼합 케이스)으로 명명되고 밑줄이 그어져 있어야합니다 (_). 예를 들어:
코드 사본은 다음과 같습니다.
var myclass = function () {
var _buffer;
this.dosomething = function () {
};
}
9. 변수가 비공개로 설정된 경우, 그 전에는 밑줄을 밟아야합니다.
this._someprivatevariable = 문;
10. 공통 변수는 이름과 일치하는 유형 이름을 사용해야합니다.
settopic (주제) // 변수 주제는 유형 주제의 변수입니다.
11. 모든 변수 이름은 영어 이름을 사용해야합니다.
12. 변수에 넓은 범위 (큰 범위)가있는 경우 글로벌 변수를 사용해야합니다. 현재로서는 클래스 멤버로 설계 될 수 있습니다. 상대 범위가 작거나 개인 변수 인 경우 간결한 단어를 사용하여 이름을 지정하십시오.
13. 변수에 암시 적 반환 값이있는 경우 유사한 방법을 사용하지 마십시오.
gethandler (); // getEventhandler () 사용을 피하십시오.
14. 공개 변수는 다음과 같은 의미의 모호성을 피하기 위해 자신의 속성을 명확하게 표현해야합니다.
Mouseeventhandler
, mseevthdlr이 아닙니다.
이 조항에 다시주의를 기울이십시오. 그렇게하는 이점은 매우 분명합니다. 표현에 의해 정의 된 의미를 명확하게 표현할 수 있습니다. 예를 들어:
dojo.events.mouse.handler // 대신 dojo.events.mouse.mouseeventhandler 대신
15. 클래스/생성자는 기본 클래스를 확장하는 이름을 사용하여 이름을 지정하여 기본 클래스의 이름을 올바르게 찾을 수 있습니다.
이벤트 핸들러
uieventhandler
Mouseeventhandler
기본 클래스는 특성을 명확하게 설명하면서 이름 지정을 줄일 수 있습니다.
Mouseuieventhandler와는 달리 Mouseeventhandler.
특수 명명 사양
"get/set"이라는 용어는 개인 변수로 정의되지 않는 한 필드에 연결되어서는 안됩니다.
"IS"가 앞에있는 변수 이름은 부울 가치가되어야하며 "Has", "Can"또는 "Dish"가 될 수 있습니다.
변수 이름으로 "Compute"라는 용어는 계산 된 변수 여야합니다.
변수 이름으로 "찾기"라는 용어는 완료된 변수 여야합니다.
변수 이름이 인스턴스화 된 클래스 또는 기타 유형의 변수 여야하므로 "초기화"또는 "init"라는 용어.
UI (사용자 인터페이스) 제어 변수와 제어 유형의 이름과 같은 왼쪽 Combobox, Topscrollpane이 뒤 따릅니다.
복수 번호에는 공통 이름 규칙이 있어야합니다 (원본 텍스트 : 복수 형식을 사용하여 수집을 지명해야합니다).
"num"또는 "count"로 시작하는 가변 이름은 일반적으로 숫자 (객체)입니다.
반복 변수는 "i", "j", "k"(등)와 같은 이름의 변수를 사용하는 것이 좋습니다.
보충 용어는 다음과 같은 보충 단어를 사용해야합니다. Get/Set, Add/Remod, Create/Despling, START/STOP, 삽입/삭제, 시작/종료 등과 같은 보충 단어를 사용해야합니다.
가능하면 약어를 사용하십시오.
부울 변수 이름의 모호성을 피하십시오.
IsoneRerror, Isonfound는 불법입니다
오류 클래스는 변수 이름에 "예외"또는 "오류"를 추가하는 것이 좋습니다.
메소드가 클래스를 반환하는 경우 이름에 반환되는 내용을 나타냅니다. 그것이 프로세스라면 그것이 한 일을 나타냅니다.
문서
4 개의 빈 탭을 사용하여 들여 보내십시오.
편집기가 파일 태그를 지원하는 경우 다음 줄을 추가하여 코드를보다 쉽게 읽을 수 있도록하십시오.
// vim : ts = 4 : noet : tw = 0 :
번역가 주 : 외국인은 VIM 편집자를 더 자주 사용 하므로이 기사를 따를 수 있습니다.
코드 폴딩은 수행해야하며 논리적이어야합니다.
코드 사본은 다음과 같습니다.
var some -expression = expression1
+ expression2
+ 발현 3;
var o = someObject.get (
표현 1,
표현 2,
표현 3
);
참고 : 표현식의 압입은 변수 선언과 일치해야합니다.
참고 : 함수의 매개 변수는 명시 적으로 들여 쓰기와 계약 규칙은 다른 블록과 일치합니다.
변하기 쉬운
공들여 나열한 것
조각
일반적인 코드 스 니펫은 다음과 같습니다.
코드 사본은 다음과 같습니다.
while (! isdone) {
dosomething ();
isdone = moretodo ();
}
if 문은 다음과 같아야합니다.
코드 사본은 다음과 같습니다.
if (somecondition) {
진술;
} else if (someothercondition) {
진술;
} 또 다른 {
진술;
}
for 진술은 다음과 같아야합니다.
코드 사본은 다음과 같습니다.
for (초기화; 조건; 업데이트) {
진술;
}
week 진술은 다음과 같아야합니다.
코드 사본은 다음과 같습니다.
while (! isdone) {
dosomething ();
isdone = moretodo ();
}
do… while 진술은 다음과 같아야합니다.
코드 사본은 다음과 같습니다.
하다 {
진술;
} while (조건);
스위치 명령문은 다음과 같아야합니다.
코드 사본은 다음과 같습니다.
스위치 (조건) {
사례 ABC :
진술;
// 중단
사례 def :
진술;
부서지다;
기본:
진술;
부서지다;
}
시도… 캐치 문은 다음과 같아야합니다.
코드 사본은 다음과 같습니다.
노력하다 {
진술;
} catch (ex) {
진술;
} 마지막으로 {
진술;
}
다른 경우 단일 라인, 또는 명령문은 괄호 안에 포함되어야하지만 다음과 같이 쓸 수 있습니다.
if (조건) {문; }
while (조건) {문; }
for (Intialization; 조건; 업데이트) {문; }
공백
의견
문서
다음은 몇 가지 기본 기능 또는 객체 설명 방법을 제공합니다.
요약 :이 기능 또는 객체 구현의 목적에 대한 간단한 설명
설명 :이 기능 또는 클래스에 대한 간단한 설명
반환 :이 함수가 반환하는 내용을 설명합니다 (반환 유형을 제외하지 않음)
기본 기능 정보
코드 사본은 다음과 같습니다.
기능(){
// 요약 : 곧 우리는 모든 뉴저지를 통치하기에 충분한 보물을 가질 것입니다.
// 설명 : 또는 새로운 룸메이트를 얻을 수 있습니다.
// 봐, 당신은 그를 찾아 간다. 그는 당신에게 소리를 지르지 않습니다.
// 내가하려고하는 것은 그를 웃고 노래하는 것입니다.
// 그와 그 주위에 춤을 추고 그는 단지 나에게 놓여 있습니다.
// 그는 나에게 냉동실에 들어가라고 말했다.
// 반환 : 바나나마 테이프 봐!
}
객체 기능 정보
반환 값 설명이 없습니다
코드 사본은 다음과 같습니다.
{
// 요약 : Dingle, Rainbow Machine에 참여하십시오!
// 설명:
// 내가 무엇을 말해줘, 내가 그랬 으면 좋겠다-오 나의 g- 그 빔,
// 그렇게 올라오고, 속도, 당신은 그것을 조정하고 싶을 것입니다.
// 실제로 내 등에 숫자를 만들었습니다. 내 말은, 그리고 나는하지 않습니다
// WHIPLASH를 말하고 싶어요.
// 그러나 당신은 부상 당했습니까?
}
기능 선언
경우에 따라 기능의 호출 및 선언은 보이지 않습니다. 이 경우 기능에 지침 등을 포함시킬 방법이 없습니다. 이 상황에 직면하면 클래스를 사용하여 기능을 캡슐화 할 수 있습니다.
참고 :이 방법은 함수의 초기화 된 매개 변수 없이만 사용할 수 있습니다. 그렇지 않으면 무시됩니다.
코드 사본은 다음과 같습니다.
dojo.declare (
"foo",
널,
{
// 요약 : Phew, 이것은 확실히 편안하고, Frylock입니다.
// 설명:
// 수천 년 전, 새벽이되기 전에
// 우리가 그를 알고있는 사람, Claus의 산타 경이있었습니다.
// 조잡한 장난감을 만드는 Ape와 같은 창의성
// Dino-Bones의 침팬지와 같은 창의성으로 그들을 던지십시오
// 어떻게 행동했는지에 관계없이 손을 주름지게합니다
// 전년도.
// 반환 : Carl이 우주의 Elfin 장로들에게 수수료를 지불하지 않는 한.
}
);
<H3> 매개 변수 </h3>
<ol>
<li> 간단한 유형
간단한 유형의 매개 변수는 함수 매개 변수 정의에서 직접 댓글을 달고 설명 할 수 있습니다.
[cc lang = "javaScript"] 함수 (/*string*/ foo,/*int*/ bar) ...
가변 유형 매개 변수
참조를위한 몇 가지 수정자는 다음과 같습니다.
? 선택적 매개 변수
... 얼굴의 매개 변수 범위는 불확실합니다
정렬
function (/*string?*/ foo, /*int.../ bar,/*string []*/ baz) ...
글로벌 매개 변수 설명
설명을 추가하려면 초기화 블록으로 옮길 수 있습니다.
기본 정보 형식은 다음과 같습니다. * 키 * 설명 필드 ( * 키 * 설명 문장)
매개 변수 및 변수의 형식은 다음과 같습니다.*key*~*type*~ 설명 필드 (*key*~*type*~ 설명 문장)
참고 :*키워드*및 ~*type*~는 문자와 숫자로 표현할 수 있습니다.
코드 사본은 다음과 같습니다.
함수 (foo, bar) {
// foo : 문자열
// 첫 번째 매개 변수로 사용됩니다
// 바 : int
// 두 번째 매개 변수로 사용됩니다
}
변하기 쉬운
인스턴스 변수, 프로토 타입 변수 및 외부 변수의 선언은 일관되므로 변수를 선언하고 수정하는 방법이 많이 있습니다. 특정 정의 및 포지셔닝은 변수가 나타나는 첫 번째 위치에서 변수의 이름, 유형, 범위 및 기타 정보를 표시해야합니다.
코드 사본은 다음과 같습니다.
함수 foo () {
// mystring : 문자열
// 시간 : int
// MyString을 인쇄 할 몇 번
// 분리기 : 문자열
// mystring 사이에 인쇄 할 내용*
this.mystring = "자리 표시 자 텍스트";
this.times = 5;
}
foo.prototype.setstring = function (mystring) {
this.mystring = mystring;
}
foo.prototype.tostring = function () {
for (int i = 0; i <this.times; i ++) {
dojo.debug (this.mystring);
dojo.debug (foo.separator);
}
}
foo.separator = "=====";
객체의 가변 주석
객체 값 및 메소드와 일치하는 주석 방법은 다음과 같이 선언 할 때와 같이 사용해야합니다.
코드 사본은 다음과 같습니다.
{
// 키 : 문자열
// 간단한 값
키 : "가치",
// key2 : 문자열
// 또 다른 간단한 값
}
반환 값
함수는 여러 다른 (유형) 값을 동시에 반환 할 수 있으므로 각 반환 값은 리턴 유형의 주석에 추가되어야합니다. 의견은 방금 줄을 댓글을 달아야합니다. 모든 반환 값이 동일한 유형 인 경우 반환 된 유형이 지정됩니다. 여러 반환 값이있는 경우 리턴 유형은 "혼합"으로 표시됩니다.
코드 사본은 다음과 같습니다.
기능() {
if (arguments.length) {
반환 "당신은 논쟁을 통과했습니다"; // 끈
} 또 다른 {
거짓을 반환합니다. // 부울
}
}
의사 코드 (논의 될)
때로는이 함수에 대한 기능 프로세스 설명과 함수 또는 클래스에서 클래스를 추가해야합니다. 이 작업을 수행 할 경우 /*======= (= 문자는 5 번 이상 나타납니다)를 사용할 수 있습니다. 이것의 장점은 코드에 이러한 것들을 추가 할 필요가 없다는 것입니다 (번역기 주 : 원래 저자는 코드 관리 시스템을 의미 할 수 있음).
이런 식으로, /*===== 및 ====* /에는 매우 긴 의견이있을 것입니다. 함수가 조정 된 후 삭제할지 여부를 고려할 수 있습니다.
코드 사본은 다음과 같습니다.
/*=======
module.pseudo.kwargs = {
// url : 문자열
// 파일의 위치
URL : "",
// mimeType : 문자열
// 텍스트/html, 텍스트/xml 등
MimeType : ""
}
=====*/
함수 (/*module.pseudo.kwargs*/ kwargs) {
dojo.debug (kwargs.url);
dojo.debug (kwargs.mimetype);
}
원본 링크 : http://dojotoolkit.org/developer/styleguide
번역 : http://www.gracecode.com에서 i.feelinglucky {at} gmail.com