1. Spring Boot + React + MySQL 네이밍 정리표
구분 항목 예시 네이밍 규칙 / 설명
백엔드 (Spring Boot) | 클래스명 | UserService, PostController | PascalCase (기능 + 역할) |
메서드명 | getUserInfo(), deletePost() | camelCase (동사 + 명사) | |
변수명 | userId, postList | camelCase, 의미 있는 이름 | |
패키지명 | com.project.user | 소문자 + 도메인 기반 분리 | |
엔티티명 | User, Post | PascalCase, DB 테이블 매핑 대상 | |
DTO명 | UserResponseDto, LoginRequestDto | PascalCase, Request/Response 명시 | |
URL 경로 | /api/users/{id} | 소문자 + 복수형 + RESTful | |
상수명 | DEFAULT_ROLE, MAX_PAGE_SIZE | SCREAMING_SNAKE_CASE |
구분 항목 예시 네이밍 규칙 / 설명
프론트엔드 (React) | 컴포넌트명 | LoginPage.jsx, UserCard.js | PascalCase, 기능 단위 구성 |
함수명 | handleLogin(), fetchUser() | camelCase, 동사로 시작 | |
상태 변수 | userInfo, isLoading | camelCase, useState 기준 명확하게 | |
파일명 | LoginPage.jsx, user-api.js | 기능명 기반 + 일관성 | |
훅 이름 | useLogin(), useUserFetch() | use + 동사, custom hook 관습 | |
폴더명 | components, pages, api | 소문자 + 복수형 권장 | |
CSS 클래스 | login-form, user-profile | kebab-case, Tailwind 사용 시 예외 가능 |
구분 항목 예시 네이밍 규칙 / 설명
데이터베이스 (MySQL) | 테이블명 | users, posts | 소문자 + 복수형 + snake_case |
컬럼명 | user_id, created_at | snake_case, 명확한 의미 | |
PK명 | id | 기본 키는 간단하게 | |
FK명 | user_id, post_id | 참조 테이블 + _id | |
제약조건명 | fk_user_post, idx_user_email | fk_, idx_ 접두사 + 명확한 대상 |
추가 팁
- 클래스/컴포넌트는 명사 중심.
메서드/함수는 동사 중심. - URL, DB는 snake_case.
- 자바, 자바스크립트는 camelCase/PascalCase.
- 한 가지 스타일로 팀 전체가 일관되게 쓰는 것이 가장 중요해요.
2. React에서 useState 네이밍 패턴
React에서 useState는 **컴포넌트의 핵심 상태(state)**를 정의하기 때문에,
이름만 보고도 이 상태가 어떤 용도인지 쉽게 알 수 있어야 함.
예시 비교
나쁜 예 좋은 예 이유
data | userList | 어떤 데이터인지 명확히 |
value | emailInput | 어떤 입력값인지 구체적으로 |
bool | isLoading | 불리언이면 is~, has~ |
temp | selectedPostId | 임시 변수도 명확하게 |
요약
- useState는 의미 있는 이름을 써야 UI 코드가 읽기 쉬워짐.
- 단순히 data, value, temp처럼 추상적인 이름은 피하는 게 좋음.
- 역할 기반 네이밍을 지키는 게 핵심.
자주 쓰는 useState 네이밍 패턴
용도 변수명 Setter 함수 설명
입력값 | email, setEmail | 사용자 입력 텍스트 |
비밀번호 | password, setPassword | 로그인/회원가입 입력 |
검색어 | searchQuery, setSearchQuery | 검색창 입력 |
체크박스 | isChecked, setIsChecked | 불리언 값 |
로딩 여부 | isLoading, setIsLoading | API 호출 상태 표시 |
에러 여부 | hasError, setHasError | 오류 상태 표시 |
성공 여부 | isSuccess, setIsSuccess | 성공 메시지 표시 조건 |
선택된 ID | selectedId, setSelectedId | 선택 항목의 ID |
현재 페이지 | currentPage, setCurrentPage | 페이지네이션 |
모달 상태 | isModalOpen, setIsModalOpen | 모달 열림/닫힘 |
항목 목록 | itemList, setItemList | 배열 상태 |
폼 상태 | formData, setFormData | 전체 폼 객체 관리 |
필터 옵션 | filterOption, setFilterOption | 필터 조건 선택 |
알림 메시지 | alertMessage, setAlertMessage | 텍스트 알림 표시 |
네이밍 팁 요약
- 불리언이면: is, has, can + 동사/명사
→ isLoggedIn, hasError, canSubmit - 리스트면: ~List, ~Items, ~Array
→ userList, commentItems - 선택값이면: selected~, current~
→ selectedId, currentTab - 사용자 입력
→ input, form, value
'웹 개발 > 웹 개발 기초' 카테고리의 다른 글
Spring Boot와 Hibernate의 네이밍 전략 (0) | 2025.04.17 |
---|---|
EL, JSTL이란? (0) | 2025.02.07 |
서블릿 매핑 방식 (0) | 2025.02.07 |
MVC 개념 및 모델1 vs 모델2 (0) | 2025.02.07 |
HTTP전달방식(GET방식과 POST방식) (0) | 2025.02.07 |