모듈 (module)
컴퓨터 분야에서의 모듈이란, 독립된 하나의 소프트웨어나 하드웨어의 단위를 의미합니다.
하드웨어 분야에서의 모듈이란, 시스템 내에서 존재하는 작은 크기의 부품으로 독립적으로 설치할 수 있고, 교체할 수 있으며 사용할 수 있는 것을 의미합니다.
CPU, 메모리등의 각 부품들을 모듈이라고 부를 수 있습니다.
소프트웨어 분야에서의 모듈이란 프로그램의 일부분으로 쉽게 붙였다 떼었다 할 수 있는 코드를 의미합니다.
우리가 HTML의 head에서 <script src=”http://…”></script> 형태로 표현하여, 불러온 자바스크립트 소스를 해당 페이지에서 사용할 수 있도록 분리된 것도 모듈이라고 부를 수 있습니다.
즉, 해당 페이지에서 특정 기능을 사용하기 위해 선택적으로 필요할 수 있지만 필수적이지 않을 수 있는 것을 모듈이라고 부릅니다.
만약 처음 만들었던 페이지에서 사용되었던 어떤 기능을 담은 자바스크립트 코드가 다른 페이지에서도 필요한 기능임을 ‘인지’하게 되었다면, 그래서 분리의 필요성을 느끼게 되었다면
그것은 그 코드가 모듈이 되어야 함을 의미합니다.
예를들어 회원가입 페이지에서 이메일의 유효성을 확인해야할 필요가 있고, 회원정보 수정 페이지에서 이메일을 변경할 때 유효성을 확인해야 할 필요가 있다면
function checkEmail(email){ ... }
위와 같은 형태로 공통의 함수를 만들어 놓은 뒤, 각각의 페이지에서 지금의 이 기능을 가진 자바스크립트를 import하여 사용할 수 있도록 해야할 것입니다.
혹은, 어떤 String형 문자열에 대해 공통으로 유효성 검사가 필요함을 느껴 그것이 모듈화가 되어야한다고 느껴 다음과 같은 코드로 작성할 수도 있을 것입니다.
function checkStringValidity(string, type){ ... }
첫번째 인자로는 검사할 문자열, 두번째 인자로는 어떤 타입인지(이메일인지, 비밀번호인지 등)를 받아 처리할 수 있도록 로직을 작성할 수도 있을 것입니다.
어떠한 코드를 모듈화한다는 것은 매우 중요하지만 어렵다고 생각합니다. 무엇을 기준으로 분리해야하는지, 어떻게 추상화할 수 있는지 코딩 경험이 적은 사람들은 헤멜 수밖에 없다고 생각합니다. (저처럼-_-)
최대한 많은 코드를 생각하면서 짜고, 어떻게 묶어서 어떻게 처리해야하는지 늘 고민하며 코딩한다면 그래도 조금씩 좋은 코드를 짤 수 있지 않을까 하며…
최근 댓글