본문 바로가기

HTML5_JS_CSS

[Book Review] JavaScript Patterns

수많은  JavaScript책중에 최근에 살펴보았던 책 한권을 리뷰할까 합니다. 최근에 몇몇 개발자분과 스터디를 하고 있어서 이런 부분을 일부 공유 하고자 합니다.
JavaScriptPatterns(Paperback)
카테고리 과학/기술 > 컴퓨터 > 프로그래밍
지은이 Stoyan Stefanov (O'Reilly, 2010년)
상세보기
<티스토리 정보첨부 -책 에는 이책의 이미지가 없네요 ^^>

 처음에는 자바스크립트 패턴이라고 해서 디자인패턴을 자바스크립트에 맞게 표현한 책인줄 알았습니다.(실제 이런 책이 있긴 합니다)
하지만 그런책은 아니더군요. 오히려 책제목 그대로의 내용을 담고 있습니다.
아쉽게도 번역서가 없어서 원서 뿐 이지만, 코드위주로 보면 좀 볼만합니다^^
자바스크립트에서 언어적인 특징만을 설명한 책은 많지 않습니다. 이런 특징을 이해하는 것은 상당히 어렵고 곤혹스럽습니다. 많은 개발자들이 이런 부분의 원리를 이해하지 못하고 개발에 임하고 있습니다(이런것은 복잡한 상황에서 더욱 개발자를 어렵게 합니다)
오늘 소개하는 책은 이런부분의 일부분을 해결해 줄 수 있는 책이 확실한것 같습니다.

또한 이책을 읽은 후에 더글라스크랙포드 아저씨의 책을 같이 읽는 것을 권장합니다
자바스크립트핵심가이드
카테고리 미분류
지은이 더글라스 크락포드 (한빛미디어, 2008년)
상세보기
비슷한 내용을 담고 있으면서, 보다 언어적인 특징을 이해하는데 많은 도움이 될것 입니다.


어떤내용이 있는지 줄거리를 말씀해 드릴까 합니다<아래 굵은 글씨는 이책의 몇몇 목차 그대로 입니다>

패턴?
위에서 썻듯이 이책은 디자인패턴뿐만을 담고 있지는 않습니다. 이책의 뒷부분에 디자인패턴도 나오긴 합니다만. 메인내용은 아닙니다.
코딩패턴이 소개되고 있습니다.
구현방식이 비교적 자유로운 언어인 자바스크립트에서는 여러가지 형태의 코딩이 가능합니다. 동일한 동작을 구현하는데 중급개발자 이상의 코드를 보면 모두 다른 코드의 형태로 유지합니다. 이러한 유형중 어떤것이 어떤상황에서 어울리는지에 대한 설명을 코딩패턴이라는 부분에서 다루고 있습니다.
컨벤션은 코딩 규칙입니다. 네이밍설정 하는 것부터  brace( 괄호)를 어떤 위치에 둘지, 공백은 어떻게 처리할지 등 으 방법이 포함되어 있습니다. 하지만 컨벤션이 이책의 메인줄거리는 아닙니다.

 Essentials
자바스크립트 문법을 사용하는 경우 어떤방법이 좋은지, 반대로 어떤패턴이 좋지 않은지 설명합니다.자바스크립트 문법과 함수중에는 쓰는 것을 삼가해야할(사실은 실패했지만 없앨수 없는 현실적인 문제가 있죠)것들이 있습니다. 
 For loops 와  For in loops 에서 주위해야 할점, 변수의 사용(전역/지역)에대한 이야기.그리고 코딩컨벤션,
eval() 함수의 사용에 대한 이야기 등. 자바스크립의 잘못 만들어진 문법의 일부분을 설명해주고 있습니다. 우리는 이러한 패턴을 사용하지 않는것이 좋습니다.

 Literals and Constructors 
리터럴과 생성자는 반대의 개념인것처럼 보이지만 실제로는 유사한 목적을 가지고 있는 것입니다. 다만 어떤 것이 더 좋은가?  어떤 상황에서 리터럴을 쓰지? 왜? 라는 이유를 얻을 수있습니다.
예를 들어,  리터럴은 더 빠르고, 코드의 양을 줄일 수 있다는 이유도 포함됩니다.
 JSON 형태(자바스크립에서 객체를 표현하는 형태)를 사용하는 경우 주의 해야 할점도 포함하고 있습니다.
 Constructors(생성자) 라는 것은  new 키워드를 통한 호출되는 함수라고 할 수 있습니다. 생성자는 뒤에 나오는 함수와 Prototype 의 기초가 되는 부분으로 중요하다고 볼 수 있습니다.

 Functions
자바스크립트는 함수가 가장 중요하다고 생각됩니다. 이 책에서도 함수에 대한 내용이 상대적으로 많으며 중요하게 다루고 있습니다.
자바와 같은 언어와 달리 자바스크립트는 다양한 표현방식을 가지고 함수를 표현할 수 있습니다. 이러한 이유는 본질적으로 자바스크립트 함수가  First-class Object 라고 이책에서 표현합니다.(참 적절한 표현입니다)
이러한 특징은  결국 자바스크립트 함수는  객체이며 그로 인해 다른 함수에  Return 되는 경우도 있고, 다른함수에  arguments로 사용이 가능하다는 점입니다. 또한 변수에 할당도 가능합니다. (어쨋든 이렇게 구현된 코드는 역시 보기는 어렵습니다 ㅎㅎ)
변수에 할당하는 경우는 보통  funtion expression 이라고 하고,  function decalarations 는 일반적인 함수를 정의하는 패턴이라고 합니다.
이외 다양한 함수의 표현방식이 있으며, 이러한 방식은 매우 유용하고 실제 자주사용되는 것임으로 분명히 이해를 하고 있는 편이 좋습니다
- callback 의 정의와 왜 사용하는지?
-  self-defining  함수의 목적은? ( 함수내에서 동일한 함수를 호출하는 형태로 한번의 초기화때 유용하게 사용이 가능합니다)
-  immediate funcitons  는 언제 사용하는지? <()function(){......}()) > 이런 형태로 즉시 실행이 바로 되는 함수 입니다.
이러한 특징을 모두 이해하고 올바른 사용법을 설명하고 있습니다.

 code reuse patterns 
자바스크립트의 중복코드를 방지하고 코드량을 줄이는 방법중 하나는 상속을 하는 것입니다. 그런데 상속을 하는 방법이 자바스크립트는 쉽지 않습니다. 사실은  자바스크립트의  Framework 을 활용해서 상속을 비교적 쉽게 사용할 수는 있습니다.
상속자체를 어떻게 하는것인지 보다,  ptototype 이라는 키워드를 이해하고 이를 통한 상속방법을 이해하는 것이 중요합니다. 실제로 이책에서는  code reuse patterns 이라는 절을 통해  prototype 객체(네 이것은 객체가 맞습니다)를 활용한 상속방법을 설명하고 있습니다.
초보자바스크립트 개발자에게는 쉽지 않은 내용인데요, 전 이부분을 이해하였다면 중급개발자라고 생각합니다
<prototype 에 대한 부분은 요 다음에 포스팅을 할까 생각중입니다>

이외에도   Design Patterns 과  DOM 을 조작하는 내용이 이책에는 있습니다.
초급자에게는 조금 어렵지만 자바스크립트를 조금 다뤄본 분들에게는 중급개발자 이상으로 가는 좋은 길잡이가 될것 같습니다.

다음에는 이책에도 포함이 되었지만 아래내용을 정리해서 글을 올려볼까 합니다.
  • 자바스크립트의 함수
  • 자바스크립트 에서의  Prototype 활용



반응형