안녕하세요, 성조입니다.
블로그에서 'IT 포스트를 다시 작성하는 날이 올까?'라는 생각을 종종 했는데, 그날이 생각보다 빠르게 찾아왔습니다. 😶🌫️
모듈(Module)과 패키지(Pakage) 차이점 요약
모듈이란?
독립적인 기능 역할을 할 수 있는 단위를 의미합니다.
패키지란?
소스 코드의 스코프 단위를 의미합니다.
(스코프의 경우. 코드가 실행되는 컨텍스트를 의미하며, 변수 또는 실행 영역과 유효범위 등을 다루는 말입니다.)
모듈(Module) 이란?
숫자 목록을 입력받아 그 중에서 최댓값(max)을 구하는 기능을 구현한다 가정해 보겠습니다.
이 기능을 재사용하기 위해, 해당 코드를 하나의 파일에 저장해 놓는다면, 이를 모듈이라고 할 수 있습니다. 모듈은 단순히 최댓값을 구하는 기능뿐만 아니라, 평균을 구하거나, 특정 조건에 맞는 값을 필터링하는 등의 다양한 기능을 포함할 수 있습니다.
이러한 기능들을 각각 다른 부분에서 사용해야 할 때, 동일한 코드를 반복해서 작성하지 않도록 기능 단위로 나누어 효율적으로 관리할 수 있습니다.
모듈은 이러한 기능들을 독립적이고, 효율적으로 활용 가능하도록 만들기 위해 변수, 함수, 클래스 등을 하나의 파일에 모아놓은 코드의 집합을 의미합니다.
예를 들면, 'MathOperations.java'라는 다음 파일에 여러 수학적 연산 기능을 구현해 놓는다면 해당 파일은 수학적 연산을 위한 하나의 모듈이 됩니다.
public class MathOperations {
public static int findMax(int[] numbers) {
int max = numbers[0];
for(int number : numbers) {
if(number > max) {
max = number;
}
}
return max;
}
public static double findAverage(int[] numbers) {
int sum = 0;
for(int number : numbers) {
sum += number;
}
return sum / (double) numbers.length;
}
}
이렇게 'MathOperations'라는 이름으로 정의된 모듈은 다른 곳에서 필요할 때마다 재사용할 수 있습니다.
(모듈에 접근하기 위한 접근 제한자도 중요합니다!)
패키지(Package)란?
패키지는 여러 개의 모듈이나 하위 패키지들을 포함하는 전체 디렉터리입니다.
예를 들어, 'com.myproject.math'라는 패키지가 있다면, 이 패키지 안에는 'MathOperations.java', 'Statistics.java' 등 여러 모듈이 포함될 수 있습니다. 패키지는 프로젝트의 규모가 커짐에 따라 코드의 가독성을 향상시키고 유지 보수를 용이하게 하기 위해 사용됩니다.
패키지를 통해 프로젝트의 구조를 명확하게 정의하고, 각 기능들이 어디서부터 어디까지 관리될 것인지를 구체화할 수 있습니다. 이는 소스 코드의 스코프 단위를 정의하는 것과도 밀접한 관련이 있습니다.
패키지는 코드의 유효 범위를 결정짓는 단위로, 글로벌 스코프와 로컬 스코프에서 각각의 기능 또는 변수가 어디서부터 어디까지 유효한지를 관리할 수 있게 해줍니다.
예를 들어, 다음과 같은 구조를 가진 프로젝트를 생각해 볼 수 있습니다. 🤔
com
└── myproject
├── math
│ ├── MathOperations.java
│ └── Statistics.java
└── utils
└── StringUtils.java
모듈(Module)과 패키지(Package)의 차이점 정리
모듈(Module)
하나의 파일에 저장된 코드의 집합이며, 독립적인 기능 역할을 할 수 있는 단위를 의미합니다.
즉, 하나의 기능을 동작하기 위한 파일입니다.
패키지(Package)
여러 개의 모듈이나, 하위 패키지들을 포함하는 소스 코드의 스코프 단위를 의미합니다.
즉, 모듈 여러 개를 포함하는 하나의 디렉터리(폴더)로도 정리할 수 있습니다.
각 용어의 목적
모듈은 관련된 코드(함수, 변수, 클래스)를 하나의 파일에 모아놓기 위한 것이고, 패키지는 관련된 모듈들을 논리적으로 그룹화하여 관리하기 위한 것입니다. 또한, 여러 개의 하위 패키지를 관리하는 상위 패키지(상위 폴더)도 있습니다. 🙂
잘못 전달된 정보 또는, 오탈자가 있는 경우 언제든지 댓글로 알려주시면 감사드리겠습니다.
다음 포스트에서 뵙겠습니다. 🙂
'Study 📔' 카테고리의 다른 글
[Study] 사용자 여정 맵핑(User Journey Mapping) 개념 익히기 (0) | 2024.11.16 |
---|---|
[Study] 사용자 중심의 서비스 기획, 왜 중요할까? (0) | 2024.11.14 |
[Study] 인증(Authentication)과 인가(Authorization) 차이점 정리 (1) | 2024.09.16 |
[Study] - 프로덕트(Product)와 프로젝트(Project) 그리고 PM 이해하기 (1) | 2024.04.28 |
[Study] UI 라이브러리와 디자인 시스템 (0) | 2023.12.24 |