개발
React와 Node.js 개발자를 위한 파일 네이밍의 모든 것
syaku
2024. 12. 5. 12:30
728x90
반응형
파일 네이밍 규칙 정리 및 가이드
네이밍 규칙을 정의하면 프로젝트의 일관성을 유지하고, 파일의 역할을 쉽게 이해할 수 있습니다. 아래는 React.js와 Node.js 각각의 파일 네이밍 방식, 예시 코드, 장단점, 그리고 주의사항에 대해 정리한 내용입니다.
1. React.js 파일 네이밍 규칙
파일 네이밍 방식:
- 컴포넌트: PascalCase
컴포넌트 파일명은 컴포넌트 이름과 동일하게 PascalCase로 작성합니다. 예:UserName.tsx
- 훅(Hooks): camelCase
파일명은 항상use
로 시작하며 camelCase를 사용합니다. 예:useUserName.ts
예시 코드:
UserName.tsx
import React from 'react';
const UserName: React.FC = () => {
return <h1>User Name Component</h1>;
};
export default UserName;
useUserName.ts
import { useState } from 'react';
export const useUserName = () => {
const [userName, setUserName] = useState<string>('John Doe');
return { userName, setUserName };
};
2. Node.js 파일 네이밍 규칙
파일 네이밍 방식:
- 케밥 케이스(kebab-case)를 사용하며, 파일명에는 역할과 목적을 명확히 나타내기 위해
.
와-
를 조합합니다.- 컨트롤러:
username.controller.ts
- 설정 파일:
data-source.config.ts
,redis.config.ts
- 컨트롤러:
예시 코드:
username.controller.ts
import { Request, Response } from 'express';
export const getUserName = (req: Request, res: Response): void => {
res.json({ userName: 'John Doe' });
};
data-source.config.ts
export const dataSourceConfig = {
host: 'localhost',
port: 5432,
username: 'admin',
password: 'securepassword',
};
redis.config.ts
export const redisConfig = {
host: '127.0.0.1',
port: 6379,
};
3. 테스트 케이스 파일 구조
테스트 파일은 프로젝트의 명확한 분리를 위해 /__tests__/
디렉터리 하위에 배치합니다. 테스트 대상과 동일한 이름을 사용하고, 파일명은 .test.ts
로 확장합니다.
디렉터리 구조:
src/
controllers/
username.controller.ts
configs/
data-source.config.ts
redis.config.ts
__tests__/
username.controller.test.ts
data-source.config.test.ts
예시 테스트 코드:
username.controller.test.ts
import { getUserName } from '../src/controllers/username.controller';
describe('getUserName', () => {
it('should return the user name', () => {
const mockReq = {};
const mockRes = { json: jest.fn() };
getUserName(mockReq as any, mockRes as any);
expect(mockRes.json).toHaveBeenCalledWith({ userName: 'John Doe' });
});
});
장점과 단점
장점
- 일관성 유지: 역할별로 명확한 네이밍 규칙이 적용되면 파일의 역할을 한눈에 파악할 수 있습니다.
- 가독성 향상: PascalCase, camelCase, kebab-case 사용으로 역할에 따라 구분이 쉽습니다.
- 협업 효율성: 네이밍 규칙이 명확하면 코드 리뷰와 팀원 간 협업이 수월해집니다.
- 확장성: 기능 추가 시 기존 규칙을 그대로 따르기만 하면 되므로 확장에 용이합니다.
단점
- 긴 파일명: kebab-case와 구체적인 명명 방식으로 인해 파일명이 길어질 수 있습니다.
- 대소문자 이슈: Git에서 대소문자 변경이 제대로 반영되지 않는 문제가 발생할 수 있습니다.
- 팀원 학습 시간: 처음 규칙을 도입할 때 팀원들이 익숙해지는 데 시간이 걸릴 수 있습니다.
주의사항 및 문제 해결
1. Git 대소문자 인식 문제
Git은 파일 대소문자 변경을 기본적으로 감지하지 않습니다. 이는 PascalCase와 camelCase를 혼용할 때 문제가 될 수 있습니다.
해결 방법:
Git에서 대소문자 변경을 강제 적용:
git config core.ignorecase false git mv FileName.tsx filename.tsx git mv filename.tsx FileName.tsx
팀원들에게 위 설정을 공유하여 문제를 방지합니다.
2. 명명 충돌
비슷한 이름의 파일이 많아지면 경로 관리가 어려워질 수 있습니다.
해결 방법:
- 도메인별로 하위 디렉터리를 생성하여 파일을 분리합니다.
- 예:
user.controller.ts
,admin.controller.ts
를 각각user/
와admin/
디렉터리에 배치.
3. 파일명 혼동
PascalCase와 kebab-case 규칙을 혼동하면 역할 구분이 모호해질 수 있습니다.
해결 방법:
- 프로젝트 초기에 명명 규칙 문서를 작성하고 코드 리뷰 과정에서 엄격히 준수합니다.
4. 파일명 길이
kebab-case로 구성된 파일명이 길어져 불편할 수 있습니다.
해결 방법:
- 불필요한 접미사(
helper
,utils
등)를 제거하거나 약어를 사용하여 간결하게 작성합니다.
정리
파일 네이밍 규칙은 프로젝트의 가독성과 유지보수성을 결정짓는 중요한 요소입니다. 명확한 가이드라인을 설정하고 이를 팀 내에서 지속적으로 공유 및 검토하세요. 이를 통해 생산성을 높이고 협업의 효율성을 극대화할 수 있습니다.
728x90
반응형