Node.js 프로젝트의 폴더 구조 가이드: 단수와 복수 네이밍 컨벤션
728x90
반응형
Node.js 프로젝트의 폴더 구조 가이드: 단수와 복수 네이밍 컨벤션
Node.js 프로젝트를 시작할 때 가장 기본이 되는 것은 폴더 구조입니다. 잘 설계된 폴더 구조는 프로젝트의 확장성과 유지보수성을 높여줍니다. 특히 폴더 이름을 단수로 할지 복수로 할지는 많은 개발자들이 고민하는 부분입니다.
기본 폴더 구조
src/
├── config/ # 설정 관련 파일
├── middleware/ # 미들웨어 파일
├── util/ # 유틸리티 함수
├── core/ # 핵심 기능
├── controllers/ # 컨트롤러 파일들
├── services/ # 서비스 파일들
├── models/ # 모델 파일들
├── routes/ # 라우트 파일들
└── types/ # 타입 정의 파일들
폴더명 네이밍 규칙
1. 단수형 사용 (개념/시스템)
특정 개념이나 시스템을 나타내는 폴더는 단수형을 사용합니다.
src/
├── config/ # 애플리케이션 설정
│ ├── database.js # 데이터베이스 설정
│ └── auth.js # 인증 설정
│
├── middleware/ # 미들웨어 시스템
│ ├── auth.js # 인증 미들웨어
│ └── logger.js # 로깅 미들웨어
│
├── util/ # 유틸리티 개념
│ ├── date.js # 날짜 관련 유틸
│ └── format.js # 포맷 관련 유틸
│
└── core/ # 핵심 기능
├── server.js # 서버 설정
└── database.js # DB 연결
2. 복수형 사용 (유사 파일들의 그룹)
유사한 역할을 하는 파일들의 모음을 나타내는 폴더는 복수형을 사용합니다.
src/
├── controllers/ # 컨트롤러 그룹
│ ├── userController.js # 사용자 관련 컨트롤러
│ └── postController.js # 게시물 관련 컨트롤러
│
├── services/ # 서비스 그룹
│ ├── userService.js # 사용자 관련 서비스
│ └── postService.js # 게시물 관련 서비스
│
├── models/ # 모델 그룹
│ ├── userModel.js # 사용자 모델
│ └── postModel.js # 게시물 모델
│
└── routes/ # 라우트 그룹
├── userRoutes.js # 사용자 관련 라우트
└── postRoutes.js # 게시물 관련 라우트
파일명 네이밍 규칙
- 단수형 사용
- 각 파일은 하나의 책임을 가지므로 단수형 사용
- 클래스/객체 이름과 일치
// userController.js
class UserController {
// ...
}
// postService.js
class PostService {
// ...
}
- 일관된 접미사
- Controller, Service, Model 등의 접미사 사용
- 역할을 명확히 표현
userController.js userService.js userModel.js userRoutes.js
네이밍 컨벤션의 장점
- 명확한 책임과 역할
- 폴더명으로 해당 그룹의 성격 파악 가능
파일명으로 개별 파일의 역할 파악 가능
일관성
- 프로젝트 전체적으로 일관된 네이밍
새로운 파일 추가 시 네이밍 고민 최소화
가독성
- 직관적인 폴더/파일 구조
코드 탐색이 용이
유지보수성
- 관련 파일들의 쉬운 그룹화
- 확장이 용이한 구조
결론
폴더 구조를 설계할 때는 "이 폴더가 개념/시스템을 나타내는가, 아니면 유사 파일들의 그룹인가"를 기준으로 단수/복수를 결정하면 됩니다. 이러한 일관된 규칙은 프로젝트의 구조를 더 명확하고 이해하기 쉽게 만들어줍니다.
이 가이드를 따르면 프로젝트 구조가 더 체계적이고 관리하기 쉬워질 것입니다.
728x90
반응형
'개발' 카테고리의 다른 글
React에서 람다 함수를 선호하는 4가지 이유 (화살표 함수 활용법) (1) | 2024.11.01 |
---|---|
Vite CJS 빌드 경고 해결 방법: 모듈 시스템 이해하기 (0) | 2024.10.30 |
How to Resolve Vite CJS Build Warning: Uanderstanding Module Systems (0) | 2024.10.30 |
error: RPC failed; HTTP 400 curl 22 The requested URL returned error: 400 (0) | 2024.10.30 |