더북(TheBook)

스크립트는 모듈이 아니다

바로 지난주 우리는 특수한 사용자 입력 장치를 제작하는 모 회사의 웹 사이트를 보았다. 다행히 이 회사는 자사 제품을 사용해볼 수 있도록 자바스크립트 예제 코드를 제공했다.

엄마야! 개발자들에게 배포한 이 자바스크립트 라이브러리는 1, 900줄에 달했고, 총 200개가 넘는 전역 함수를 또 다른 전역 변수/함수가 꼬리에 꼬리를 물고 있었다. 전역 함수는 대부분 최소한으로 이름 붙여 다른 라이브러리와 충돌 가능성은 적었지만, makeUritoHex처럼 그렇지 않은 경우도 있었다.

이는 전형적인 자바스크립트 ‘스크립팅’의 유물이다. 한 페이지에 스크립트가 하나밖에 없던 시절에는 전역 이름공간(namespace)에 함수를 추가해도 별 탈이 없었다. 요즘 자바스크립트 애플리케이션에서는 어림도 없는 소리다.

여러분이 작성한 스크립트는 이 스크립트가 담긴 .js 파일 안에 담겨 있으니 어떤 경우라도 완전 분리는 불가능하다. 파일 첫 부분이 이렇게 시작하면,

var myVariable = makeValue();

myVariable은 같은 애플리케이션의 다른 스크립트에서도 볼 수 있고 makeValue함수도 마찬가지다.

자바스크립트는 데이터와 함수를 적절히 캡슐화한 모듈을 만드는 조리법이 매우 다양하다. 스크립트 파일은 그런 조리법이 아니다(데이터 캡슐화는 3장에서 자세히 다룬다)!

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.