확장메뉴
주요메뉴


닫기
사이즈 비교
소득공제
읽기 좋은 자바스크립트 코딩 기법

읽기 좋은 자바스크립트 코딩 기법

: 유지보수가 쉬운 코드로 팀의 생산성을 높이자

첫번째 리뷰어가 되어주세요
베스트
IT 모바일 top100 3주
정가
19,000
판매가
17,100 (10% 할인)
구매 시 참고사항
eBook이 출간되면 알려드립니다. eBook 출간 알림 신청
분철서비스 시작 시 알려드립니다. 분철서비스 알림신청

관련상품

읽기 좋은 코드가 좋은 코드다
[도서] 읽기 좋은 코드가 좋은 코드다
더스틴 보즈웰,트레버 파우커 공저/임백준 역 한빛미디어
10% 16,200
읽기 좋은 코드가 좋은 코드다

품목정보

품목정보
발행일 2013년 01월 07일
쪽수, 무게, 크기 304쪽 | 680g | 188*235*30mm
ISBN13 9788979149883

책소개 책소개 보이기/감추기

목차 목차 보이기/감추기

저자 소개 관련자료 보이기/감추기

저자 : 니콜라스 자카스
니콜라스 자카스는 프런트엔드 컨설턴트로서 집필, 강연 등 활발히 활동하고 있습니다. 야후에서 5년여간 근무하며 야후 홈페이지 프런트엔드 기술 관련 팀을 이끌었으며 YUI 라이브러리 개발에도 참여했습니다. 저서로는 『자바스크립트 성능 최적화』(한빛미디어, 2011)와 『Professional JavaScript for Web Developers』(Wrox, 2005)가 있습니다.
역자 : 김광호
NHN 지도 지역 개발랩에서 네이버 지도의 프런트엔드를 담당하며 자바스크립트 개발을 시작했습니다. 소프트웨어 품질 관리에 대해 관심이 많아 사내에서 JavaScript Quality Practice를 강의하고 있습니다. 티맥스소프트에서 데이터베이스 관련 솔루션을 개발했으며 지오투정보기술에서 GIS 솔루션을 개발했습니다

책 속으로 책속으로 보이기/감추기

학부 시절에 했던 과제나 학기 프로젝트는 코드가 제대로 동작만 하면 좋은 점수를 얻을 수 있었습니다. 또 차후에 그 코드를 개선하고 관리할 필요도 없었습니다. 그러나 현업에서는 짧게는 몇 달 길게는 몇 년 동안 사용될 코드를 작성하는 것이라 그 품질도 생각해야만 합니다. 그런데 대부분의 개발 업무는 아무것도 없는 상태에서 처음부터 개발하는 일은 거의 드물고 주로 다른 사람이 작성한 코드를 기반으로 이루어집니다. 이 과정에서 자연스레 다른 사람이 작성한 코드를 보며 감탄할 때도 있지만, 도대체 작성한 사람이 누군지 얼굴 한번 보고 싶을 때도 있습니다. 이 책은 바로 이러한 불미스러운(?) 일을 방지하기 위한 책입니다.
‘다른 사람이 좋지 않은 감정으로 나를 보고 싶어하는 일이 없게 자바스크립트를 개발하는 방법.’ 쉽게 말해, 이것이 이 책에 담긴 핵심입니다.

특히 자바스크립트는 언어의 특성상 제대로 관리하지 않으면 복잡도가 감당할 수 없을 정도로 높아질 수 있습니다. 전역 변수/함수를 사용할 수 있고 모든 객체를 원하는 대로 바꿔버릴 수도 있으며 eval()을 사용해 자바스크립트 형태의 문자열을 실행할 수도 있습니다. 물론 이를 적절하게 잘 이용하면 상당히 유용하지만 단순히 편하다는 이유로 혹은 동작한다는 이유로 작성하면 나중에 본인도 왜 이렇게 짰는지 잊어버리고 헤매게 됩니다. 그 코드로 개발해야 하는 담당자는 어서 빨리 퇴근하고 싶다는 생각만 들 뿐이죠. 즉 생산성을 떨어뜨리는 장본인이 되는 것입니다. 이 책에서 스타일 가이드라인과 JSLint를 강조하는 이유입니다.
이 책에서 다루는 내용 대부분은 흔히 있으면 좋지만 없어도 그만인 것으로 생각하기 쉽습니다. 그러나 실제로는 ‘Part 2 프로그래밍 프랙티스’를 제외하고는 자바스크립트뿐만 아니라 다른 프로그래밍 언어로 개발할 때에도 반드시 필요한 것입니다. 특히 ‘Part 3 자동화’에서 다루는 내용은 빌드 및 테스트를 자동으로 해주는 CI로 연결되는데 CI는 선택이 아니라 필수라 말하고 싶습니다. 예를 들면 우리는 몸 상태를 알아보기 위해 건강검진을 받거나 인바디 검사를 받습니다. 이런 검사를 우리 몸에 변화가 있을 때마다 우리도 모르는 사이에 자동으로 해준다면 정말 편할 겁니다. 게다가 지속적으로 몸의 상태를 알 수 있으니 건강 관리도 더 열심히 하게 될 것입니다. 이와 마찬가지로 CI는 코드에 변화가 있을 때마다 또는 주기적으로 검사를 수행해서 코드의 품질을 확인하고 자동으로 테스트를 수행합니다. 그리고 그 결과를 우리에게 알려줌으로써 코드 품질을 지속적으로 관리할 수 있도록 환기시켜 주는 역할을 합니다.
설명이 길었습니다만 제가 이 책을 처음 읽었을 때 느꼈던 많은 것을 독자 여러분도 느끼며 그것이 꼭 도움이 되길 바랄 뿐입니다. 마지막으로, 부족한 제 번역을 교정해주시느라 고생하셨을 조희진 에디터님과 박민아 에디터님께 정말 감사하다는 말씀 드리고 싶습니다. ---「옮긴이의 말」 중에서

웹 개발의 전문화는 어렵고 복잡한 과정을 거쳐 이루어져 왔습니다. 야후 같은 대기업에서도 웹을 전문화시키는 과정에서 많은 시행착오를 겪어왔습니다. 물론 소규모의 기업에서 모든 웹 서비스를 혼자 담당하는 사람이라면 무엇이든 원하는 대로 할 수 있을 겁니다. 하지만 대부분의 프로그래머가 기업이라는 환경에서 일하게 되면서 지금껏 소규모 전투에서 혼자 싸워왔던 군인들이 이제는 팀으로 싸우는 방법을 익혀야 하는 것과 마찬가지가 되었습니다.
저는 1990년대 후반부터 자바스크립트를 공부했습니다. 당시 자바스크립트는 새롭게 등장한 언어라서 공부할 자료가 거의 없었습니다. 저 역시 복잡한 IE와 넷스케이프 내비게이터를 탐구하며 독학으로 자바스크립트를 익혀야 했습니다. 이리저리 실험해보고 가설을 세우고 다시 실험해보며 동작 원리를 알아낼 때까지 모든 과정을 반복했습니다. 운이 좋았던 것인지 이러한 호기심과 노력이 첫 직장에서 큰 도움이 되었습니다. 본격적인 제 커리어의 첫 5년은 자바스크립트 개발자로 시작했습니다. 당시 자바스크립트와 웹 개발 지식은 누구보다 깊이 있다고 자부할 수 있었습니다. 간단한 문제든, 어려운 문제든 대부분 제가 해결할 수 있었습니다. 하지만 제 생각을 함께 토론하거나, 모르는 문제에 관한 조언을 구할 사람이 없다는 점은 힘들었습니다. 게다가 문제를 해결할 수 있는 사람이 회사에서는 저 혼자였기에 더욱더 제 모든 역량을 쏟아부어야만 했습니다.
5년 동안 저는 끊임없는 노력을 통해 기술과 업무 모두 자신할 수 있을 정도로 수준을 향상시켰습니다. 하지만 당시, 저는 다른 사람이 제 코드를 어떻게 볼지는 고민하지 않았습니다. 제가 작성한 코드를 리뷰해주거나 수정해줄 만큼 기술에 대해 잘 아는 사람이 없었기 때문이죠. 순수한 의미에서, 저는 해커였습니다. 원하는 방식대로 코드를 작성했고 잘 바꾸려고 하지도 않았습니다.
6년 차가 되던 해에는 이직을 했습니다. 그런데 새로운 팀에서는 모든 사람이 프로젝트의 전 부분에 대해 코드를 작성해야 했습니다. 저도 자바스크립트와 웹 개발에만 전념할 수는 없었습니다. 저는 서버 사이드 코드를 작성하고 SQL 쿼리를 만드는 데 많은 시간을 보냈습니다. 마찬가지로 백엔드(backend) 개발을 주로 해오던 개발자들도 웹 코드를 작성해야 했습니다.
그 때야 비로소 제가 작성한 코드가 다른 팀원들의 방식과 많이 다르다는 것을 알게 됐고, 문제가 있다는 것을 느꼈습니다.
저는 팀에 더 도움이 되도록 동료들과 같은 방식으로 코드를 작성하기 시작했습니다. 서버 사이드 코드와 SQL은 생소한 부분이라 이 부분에 대해 잘 아는 동료가 작성한 코드의 패턴을 따라 했습니다. 또한 동료에게는 HTML, CSS, 자바스크립트 코딩 패턴을 적용해볼 것을 권하고 이를 표준으로 규정하기 위해 빌드 프로세스에 린트를 추가했습니다. 그 결과 우리 팀은 마치 윤활유가 잘 칠해진 기계처럼 유기적으로 일할 수 있었습니다.
그 후 2006년도에 야후에 입사했을 때, 제게는 업무 처리에 관한 나름의 굳은 신념이 있었습니다. 하지만 그곳에서 접한 건 전혀 다른 세상이었습니다. 제 첫 번째 팀이었던 My Yahoo! 팀은 지금까지 경험한 팀 중에서는 가장 큰 규모였습니다. 간략한 가이드라인이 세워져 있었지만 배울 게 너무나 많았습니다. 새로운 기술, 프로세스, 툴이 매일 쏟아졌습니다. 새로운 환경에 대해 배우기 위해 열심히 노력하며 많은 시간을 투자했고, 동료로부터 최대한 다양한 지식을 얻으려 노력했습니다.
몇 개월 후, 저는 한 가지 문제점을 찾아냈습니다. 이미 익숙해진 프로세스 중에도 항상 옳지만은 않은 부분들이 있었습니다. 게다가 통일된 방법이 없어 많은 사람들이 각자의 방법대로 처리하다가 버그로 이어지기도 했습니다. 이런 상황을 인지하고 있던 매니저는 어느 날 저를 불러 개발 환경을 정리해달라는 말과 함께 지금까지도 저에게 힘이 되는 한마디를 건넸습니다. “당신이 작성한 코드는 잘 동작하는 데다 버그도 적습니다. 다른 사람들이 모두 당신처럼 코드를 작성하게 하고 싶군요.” 이에 저는 바로 My Yahoo! 프런트엔드 개발팀에 몇 가지 구조를 도입하는 작업을 시작했습니다.
My Yahoo! 팀에서 성공적인 성과를 보여준 덕분에 2008년 Yahoo! 홈페이지 개편 작업에서는 프런트엔드 관련 리더로 뽑힐 수 있었습니다. 이 프로젝트에서는 20명 이상의 프런트엔드 엔지니어가 같은 코드에서 작업하게 되어, 저의 조직력과 코드 품질 관리 능력을 시험해 볼 좋은 기회였습니다. 몇 달 동안 같이 배우고 협력한 결과, 우리 팀은 많은 사람들이 놀랄 정도로 생산성이 높고 품질이 좋은 코드를 만들어 낼 수 있었습니다. 코드를 작성한 사람과 상관없이 코드에 일관성이 있을 뿐만 아니라, 다른 사람이 작성한 코드를 수정하거나 새로운 기능을 추가하는 데 걸리는 시간도 빨랐습니다. 그 시절 엔지니어링 팀에서 2~3년 동안 우리 팀이 일궈낸 것들은 여전히 제 커리어에서 가장 빛나는 부분 중 하나입니다.
이 책은 제가 야후에 근무한 동안 쌓아온 팁과 기술을 담고 있습니다. 나아가 제 방식대로만 하는 해커 같던 제가 팀을 위해 어느 정도 자신을 포기할 줄 아는 소프트웨어 엔지니어로 어떻게 변했는지를 말하려 합니다. 다시 말해 이 책은 ‘개인이 아닌, 팀의 일원으로 자바스크립트 코드를 작성하는 방법’에 대한 것입니다.
그러나 ‘불편한 진실’은 우리가 코드를 유지보수하는 데 대부분의 시간을 보낸다는 사실을 개발자들도 이해하지 못한다는 것입니다. 사실, 우리가 텍스트 에디터를 열고 처음부터 코드를 작성하는 일은 굉장히 드문 경우입니다. 대부분 이미 있는 코드에 새로운 코드를 추가하거나 수정합니다. 그런데 애초에 코드를 유지보수성이 좋게 작성하면 다음에 작성자 본인이나 다른 사람이 그 코드에 작업하더라도 쉽게 수정할 부분을 찾을 수 있습니다. 이러한 이유로 저는 야후에서 동료에게 “우리는 자신을 위해 코드를 작성하는 것이 아니라 다음에 이 코드를 보게 될 사람을 위해 작성하는 것이다.”라는 말을 자주 했습니다.
이 책은 자바스크립트 코딩 컨벤션과 이에 대한 논의로 구성되어 있습니다. 가장 유명한 코딩 컨벤션 문서인 ‘자바 프로그래밍 언어 코드 컨벤션’에서는 다음과 같은 이유로 코딩 컨벤션의 중요성을 언급하고 있습니다.

- 소프트웨어를 사용하면서 드는 비용의 80%는 유지보수에 사용된다.
- 소프트웨어 생명주기 동안 최초 개발자가 끝까지 유지보수를 하는 경우는 거의 없다.
- 코딩 컨벤션은 소프트웨어의 가독성을 향상시켜, 개발자가 새로운 코드를 더 빠르고, 더 완전하게 이해할 수 있게 한다.
- 소스 코드를 제품화 시키려면, 다른 제품들처럼 깔끔하고 잘 패키지화되는 것을 보장할 수 있어야 한다.
이러한 설명은 여전히 맞는 말입니다. 따라서 이 책에서 다루는 컨벤션은 여러분이 자바스크립트 코드를 작성하는 데 최대한 도움이 되도록 구성했습니다.
이 책을 읽는 분은 여기에서 다루는 내용에 대해 열린 마인드일 것이라 생각합니다. 대부분의 테크닉은 다수의 개발자가 같은 코드에서 개발하는 환경에 초점이 맞춰져 있습니다. 팀의 일원이 된다는 의미는 어떤 일에 결정을 내릴 때 자신이 아닌 팀의 입장에서 최선의 결정을 내리는 것이라 생각합니다. 이 말은 경우에 따라 자신의 취향과 생각, 나아가서는 자존심도 포기해야 한다는 것도 의미합니다. 하지만 그 결과로 무엇이든 할 수 있는 능력 있는 팀을 만들 수 있습니다. 이 책이 그러한 훌륭한 팀을 만드는 데 큰 도움이 되길 바랍니다.
---「지은이의 말」 중에서

출판사 리뷰 출판사 리뷰 보이기/감추기

회원리뷰 (0건) 회원리뷰 이동

  등록된 리뷰가 없습니다!

첫번째 리뷰어가 되어주세요.

한줄평 (0건) 한줄평 이동

  등록된 한줄평이 없습니다!

첫번째 한줄평을 남겨주세요.

배송/반품/교환 안내

배송 안내
반품/교환 안내에 대한 내용입니다.
배송 구분 예스24 배송
  •  배송비 : 무료배송
포장 안내

안전하고 정확한 포장을 위해 CCTV를 설치하여 운영하고 있습니다.

고객님께 배송되는 모든 상품을 CCTV로 녹화하고 있으며, 철저한 모니터링을 통해 작업 과정에 문제가 없도록 최선을 다 하겠습니다.

목적 : 안전한 포장 관리
촬영범위 : 박스 포장 작업

  • 포장안내1
  • 포장안내2
  • 포장안내3
  • 포장안내4
반품/교환 안내

상품 설명에 반품/교환과 관련한 안내가 있는경우 아래 내용보다 우선합니다. (업체 사정에 따라 달라질 수 있습니다)

반품/교환 안내에 대한 내용입니다.
반품/교환 방법
  •  고객만족센터(1544-3800), 중고샵(1566-4295)
  •  판매자 배송 상품은 판매자와 반품/교환이 협의된 상품에 한해 가능합니다.
반품/교환 가능기간
  •  출고 완료 후 10일 이내의 주문 상품
  •  디지털 콘텐츠인 eBook의 경우 구매 후 7일 이내의 상품
  •  중고상품의 경우 출고 완료일로부터 6일 이내의 상품 (구매확정 전 상태)
반품/교환 비용
  •  고객의 단순변심 및 착오구매일 경우 상품 반송비용은 고객 부담임
  •  직수입양서/직수입일서중 일부는 변심 또는 착오로 취소시 해외주문취소수수료 20%를 부과할수 있음

    단, 아래의 주문/취소 조건인 경우, 취소 수수료 면제

    •  오늘 00시 ~ 06시 30분 주문을 오늘 오전 06시 30분 이전에 취소
    •  오늘 06시 30분 이후 주문을 익일 오전 06시 30분 이전에 취소
  •  직수입 음반/영상물/기프트 중 일부는 변심 또는 착오로 취소 시 해외주문취소수수료 30%를 부과할 수 있음

    단, 당일 00시~13시 사이의 주문은 취소 수수료 면제

  •  박스 포장은 택배 배송이 가능한 규격과 무게를 준수하며, 고객의 단순변심 및 착오구매일 경우 상품의 반송비용은 박스 당 부과됩니다.
반품/교환 불가사유
  •  소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
  •  소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우 : 예) 화장품, 식품, 가전제품, 전자책 단말기 등
  •  복제가 가능한 상품 등의 포장을 훼손한 경우 : 예) CD/LP, DVD/Blu-ray, 소프트웨어, 만화책, 잡지, 영상 화보집
  •  소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우
  •  디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  •  eBook 대여 상품은 대여 기간이 종료 되거나, 2회 이상 대여 했을 경우 취소 불가
  •  중고상품이 구매확정(자동 구매확정은 출고완료일로부터 7일)된 경우
  •  LP상품의 재생 불량 원인이 기기의 사양 및 문제인 경우 (All-in-One 일체형 일부 보급형 오디오 모델 사용 등)
  •  시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  •  전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우
소비자 피해보상
  •  상품의 불량에 의한 반품, 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 준하여 처리됨
환불 지연에
따른 배상
  •  대금 환불 및 환불 지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리
  • 품절 상태입니다.
뒤로 앞으로 맨위로 공유하기