자바 스크립트 명명 규칙


12

Java 배경 출신이며 JavaScript를 처음 사용합니다. 다음 예제와 같이 단일 문자 매개 변수 이름을 사용하는 많은 JavaScript 메서드를 발견했습니다.

doSomething(a,b,c)

마음에 들지 않지만 다른 JavaScript 개발자는 JavaScript 파일을 브라우저로 전송해야한다는 점을 지적하면서 파일 크기를 줄이기 위해 수행되었다고 확신했습니다.

그런 다음 다른 개발자와 대화하는 것을 발견했습니다. 그는 Firefox가 변수 이름을 잘라서 페이지를 더 빨리로드하는 방법을 보여주었습니다. 이것이 웹 브라우저에 대한 표준 관행입니까?

JavaScript로 프로그래밍 할 때 따라야하는 모범 사례 명명 변환은 무엇입니까? 식별자 길이가 중요합니까? 그렇다면 어느 정도까지 중요합니까?


13
브라우저가 변수 이름을 변경한다고 의심합니다. 의 존재에서 eval, 그것은 안전하지 (그래, eval당신은 여전히 좋겠 - 무서운이지만, 그것의 표준의 일부 및 최적화에 대한 멀리 표준 compilance를 포기하지 않는 것) 트래픽을 감소 조금도 도움이되지 않습니다 전체 파일을 보내십시오.

4
개발자가 짧은 변수 이름의 장점에 대해 논쟁하는 것을 자주 보았습니다. 듣지 마세요. 이것은 "나는 좋은 이름을 발명하기에는 너무 엄지가 많다"또는 "많은 문자를 입력하기에는 너무 게으르다"는 구실이다.
Doc Brown

@DocBrown : 심지어 나는 그것을 좋아하지 않았다. JavaScript 전문가가 아니기 때문에 모범 사례를 알고 싶었습니다.
ManuPK

하루가 끝날 무렵에 의미있는 분석법 이름을 사용하기 위해 50-100KB의 추가 데이터에 대해 이야기하고 있었습니까? 100KB가 속도 문제를 일으키는 경우 충분히 큰 사용자 풀이 해당 문제를 경험하지 못하므로 해결하려고 시도 할 가치가 없습니다.
Ramhound

답변:


26

개발자 스스로 짧은 변수 이름을 사용 하고 있지 않다는 것을 알게 될 것입니다 . 개발하는 동안 의미 있고 상세한 변수 이름을 사용하고 있습니다.

그런 다음 빌드 / 릴리스 프로세스에서 작성된 코드 는 웹 사이트 속도를 높이는 최상의 방법 으로 파일 크기를 최소화하려는 의도로 축소 기 / 난독 처리기를 통해 실행됩니다 . 성능에 많은 관심 있다면 이것은 선택적 단계 입니다. 대부분의 작은 웹 사이트는이 작업을 수행하지 않습니다.

당신은 , 개발자로서, 안 신경 축약 / 난독 과정에 대해; 읽기 쉽고, 의미 있고, 잘 문서화되고 체계적으로 작성되도록 코드를 작성하십시오. 그런 다음 성능에 관심이 많은 경우 (선택 사항, 잊지 마십시오!) 릴리스 프로세스에 축소 기 / 난독 화기를 도입하여 코드를 최소화하고 (공백, 줄 바꿈, 주석 등 제거) 난독 처리 (예 : 변수 단축) 이름). 난독 화 대 최소화를 설명하는 좋은 기사는 여기에서 찾을 수 있습니다 .

또한 Desktop FireFox는 변수 이름 기간을 자르지 않습니다 . 변수 이름이 잘 리면 페이지 다운로드 속도가 빨라집니다. FireFox가 파일을 가져올 때까지 파일이 이미 다운로드되었으므로 따로 다운로드 할 필요가 없습니다. 친구가이 작업을 수행하는 플러그인을 실행할 수 있습니다. 이 경우 쓸모가 없기 때문에 제거하라고 지시하십시오.

완료하기 위해 일부 (모바일) 브라우저에는 요청한 리소스의 응답을 가로 채고 사용자를 위해 압축 하는 중개인 서버를 사용할 수있는 옵션이 있습니다 ( JavaScript 파일의 축소를 포함 할 수 있음 ). 압축은 서버에서 (즉 , 페이지를 다운로드 하기 전에 ) 수행되므로 이미 파일을 다운로드 한 후에 (질문에서 제안한대로) 브라우저에서 보다 작은 파일을 다운로드하면 잠재적 인 이점이 있습니다. 이러한 모바일 브라우저에는 Opera Mini 및 최신 버전의 Chrome (iOS에서는 최소한 Android에 대해서는 확실하지 않음)이 포함됩니다. 자세한 내용은 여기를 참조 하십시오 .


11

아니요, 모든 브라우저가 자동으로 자바 스크립트를 줄여 성능을 향상시키는 것은 아닙니다.

라는 도구가 있기 때문에, 자바 스크립트의 경우, 당신은 속도 나 보안의 처리에 이익에 대한 코드의 가독성 / 유지 보수를 희생해서는 안 난독 와라는 다른 도구 shinkers (또는 압축기) 이 목적을 위해 설계되었습니다.

미리 최적화하지 마십시오. 페이지가 빠르게로드되고 JavaScript에 지나치게 민감한 내용이없는 경우 걱정하지 마십시오. 의미있는 이름으로 변수의 이름을 지정하십시오. 코드 가독성은 유지 관리에 매우 중요하며 거의 희생되지 않아야합니다.

좋은 JavaScript 코딩 규칙에 대한 참조를 원한다면이를 사용 하는 것이 좋습니다 .



1

저는 JavaScript에서 아주 오랫동안 일했습니다.

모든 변수에 대해 헝가리 표기법 을 사용해야한다는 명명 표준이있었습니다 .

제대로 작동하는 것 같습니다. 나는 그것을 사용하지 않는 경우가 있다는 것을 알고 있지만 그것은 우리에게 잘 작동했습니다. 특히 물건을 찾아야하는 대규모 JavaScript 파일이있는 경우.

조기 최적화에주의해야합니다. 실제로 훨씬 더 빨리 실행되지 않는 지저분한 코드로 끝날 가능성이 큽니다.


5
헝가리 표기법? 오래된 학교입니다. 헝가리 표기법은 오래된 개발 방식이므로 더 이상 권장되지 않습니다.
Smokefoot

2
나는 그것을 조금 사용하는 경향이 있지만 jquery로 싸인 값에 대해서만 $로 시작할 것입니다. 헝가리어 표기법의 문제는 사람들이 당신이 "문자열"대 "INT"의 관점에서가 아니라 프로그램의 sematics의 측면에서 입력 얘기하는 데 사용되는 것입니다
재커리 K

"특히 물건을 찾아야하는 대규모 JavaScript 파일이있는 경우" -들려 그러나 헝가리어 표기법은 고집 석고입니다. 장기적으로 도움이되지 않으며 무언가 유형을 변경해야 할 때 혼란 스럽지만 모든 변수 접두사를 변경할 시간이 없습니다. GWT가 자체 IMO로 들어오는 모든 것을 자동화합니다.
funkybro

1
나는이 표현을 느슨하게 타이핑 된 언어의 측면을 "파괴"하는 것으로 사용하지는 않는다. 물론, 유형을 변경할 때 이름을 변경해야하지만, 어쨌든해야 할 일을 추적 할 수 있도록하는 것이 좋습니다 . 나는 추악한 측면이 있다는 것을 알고 있습니다. 그러나 느슨한 유형의 언어로 LARGE (수십만 줄의 코드를 사용하고 있음) 프로젝트에서 일한 적이 있다면 특정 인스턴스에서 더 빨리 길을 찾을 수 있습니다. 날짜 등을 말하면 실제로 OP가 죽이려는 핵심 문제를 해결하지 못합니다.
Alan Delimon

1
헝가리 표기법은 사람들이 이유를 실제로 이해하지 않고 즉시 기각하는 것 중 하나입니다. 그것은의이 같은 범주에 그것의 방법을 찾은 goto사람들이 아무 생각없이 진언 반복 곳 '... 고토를 사용하지 않는 ... 그나마 사용 고토' . 실제로는 툴킷의 도구 일뿐입니다. 다른 도구와 마찬가지로 유용한 상황과 그다지 유용하지 않은 상황 (또는 심지어는 해로운 상황)도 있습니다. 누군가가 망치로 나무 조각을 보려고 한 나쁜 경험을 한 다음 '해머를 사용하지 말고 훨씬 더 잘 보았다 '고 선언했습니다 ! . 청소 일반화는 항상 잘못되었습니다
MattDavey

1

식별자 길이는 중요하지 않습니다. 다른 사람들이 말했듯이 프로덕션에서 최소화는 스크립트 다운로드 시간을 줄이는 데 사용될 수 있습니다. 실제로, JavaScript는 기발한 언어이고 오랫동안 자바 스크립트는 작업을 수행하는 것으로 무시되어 왔기 때문에 허용 가능한 코딩 / 이름 지정 규칙을 따라야합니다. 명명 규칙을위한 장소를 찾고 있다면 Google JavaScript 스타일 가이드 가 적합합니다. 그것은 제안한다

  • functionNamesLikeThis (예 : getCashbackData () {}
  • variableNamesLikeThis, 예를 들어 var alertInterval = 10;
  • ClassNamesLikeThis (예 : var CustomerOrder = {getOrderLines : function () {}}
  • EnumNamesLikeThis와 같이 예를 들어 var ColorOfChoice = {White : "#FFFFFF"}
  • methodNamesLikeThis (예 : var CustomerOrder = {getOrderLine : function () {}}
  • SYMBOLIC_CONSTANTS_LIKE_THIS (예 : var EPOCH_UNIX = "01011970"

링크를 한 번 더 추가 할 것이 있습니까? Douglas Crockford가 누군지 설명조차하지 않으려 고합니다.
Ramhound

0

"깨끗한 코드 개발자"철학에 화를 내고 (위의 게시물에서 변수 이름의 크기를 줄임으로써 성능에 영향을 미치지 않음을 알았습니다.)

  1. aptana, netbeans, eclipse (모두 무료) 또는 수많은 상용 제품 (무료 게임이있는 경우, JetBrains의 제품을 살펴보십시오)
  2. 주석 처리가 불필요한 방식으로 코드를 작성하십시오. 즉, 글쓰기 대신

    getXy(e) { return [e.pageX, e.pageY ] }

    이것은 실제로 무엇이든 의미 할 수 있습니다 (특히 js와 같은 미친 듯이 조잡한 언어의 경우).

    getPageCoordinatesFromEvent(event) { 
        return [event.pageX, event.pageY ];
    }

    좋은 IDE에서는 일반적으로 몇 글자를 입력하고 자동 완성에서 Enter 키를 누르는 두 배-초의 변수 이름을 입력하지 않습니다. 모든 문자를 직접 입력해야한다고 주장하면 좋은 IDE는 어쨌든 오타가 있음을 알 수 있습니다. 이것은 매우 피상적 ​​인 예일 뿐이므로 (비평의 형태가 아니라 정직한 권장 사항으로) 강력히 제안합니다.

  3. Robert C.Martin의 "Clean Code"및 Hunt / Thomas의 "Pragmatic Programmer"라는 책을 받고 이런 종류의 질문을 다시는하지 마십시오. 지속적인 통합 서버에서 작업하여 지루한 테스트를 자동화하는 것은 너무 바쁩니다. -, 개발 과정의 일부를 구축하고 (최소화 포함) 재미있는 부분에 집중하여, 훌륭한 일을하는 명확하게 이해할 수있는 코드를 작성하십시오!

추신 : 최신 자바 스크립트 코드를 개발하여 속도를 높이려면 John "Mr. jQuery"Resig의 "Pro Javascript Techniques"에 관한 책을 참조하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.