-
Notifications
You must be signed in to change notification settings - Fork 0
13 Coding Convention
2hwayoung edited this page Apr 15, 2025
·
1 revision
๋ณธ ๋ฌธ์๋ ํ ๋ด์์ ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ๊ณผ ํ์ ๋ฐฉ์์ ์ ์งํ๊ธฐ ์ํ ์ฝ๋ฉ ์ปจ๋ฒค์ & ๋ค์ด๋ฐ ์ปจ๋ฒค์ , ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํ ์๋ฃ์ ๋๋ค. ํ์ ์ ํ์๋ค๊ณผ ํ์ ํ ์ ๋ฐ์ดํธํด ์ฃผ์ธ์.
-
Domain ๊ธฐ์ค ํจํค์ง ์์ฑ
- ๊ฐ ๋๋ฉ์ธ๋ณ๋ก ์ต์์ ํจํค์ง๋ฅผ ์์ฑํ ํ, ํ์์ ์ธ๋ถ ๋๋ฉ์ธ ๋ฐ ์ญํ ๋ณ ํจํค์ง๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
- ์์ ๊ตฌ์กฐ:
{domain} โโโ {subdomain} โโโ controller โโโ service โโโ dto โโโ entity โโโ repository
-
Class:
- ๋ช
๋ช
๊ท์น: PascalCase
- ์:
UserController,UserService
- ์:
- ๋ช
๋ช
๊ท์น: PascalCase
-
Variables & Functions:
- ๋ช
๋ช
๊ท์น: camelCase
- ์:
userName,getOrderItems()
- ์:
- ๋ช
๋ช
๊ท์น: camelCase
-
Constants:
- ๋ช
๋ช
๊ท์น: ์๋๋ฌธ์ + snake_case
- ์:
MAX_COUNT,DEFAULT_USER_ROLE
- ์:
- ๋ช
๋ช
๊ท์น: ์๋๋ฌธ์ + snake_case
- Controller๋ Request, Response ์ ์ฉ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐ ๊ตํ์ ๋ด๋นํฉ๋๋ค.
-
์์ธ ์ผ์ด์ค๋ ๋ฐ๋์ ์ฒ๋ฆฌํ๊ณ , ๊ด๋ จ API ์คํ์
@ApiResponse๋ฑ์ ์ ๋ํ ์ด์ ์ผ๋ก ๋ฌธ์ํํฉ๋๋ค. -
DTO ๋ถ๋ฆฌ:
- Controller์์ ์ฌ์ฉํ๋ Request/Response ๊ฐ์ฒด๋ ๋ณดํต
record๋ก ์์ฑํ๋ฉฐ, ๋ค์ด๋ฐ ๊ท์น์{Domain}{MethodName}Request๋๋{Domain}{MethodName}Responseํํ๋ก ํฉ๋๋ค. - Controller ๋ด์ ๋ณ๋์ Dto ์๋ธํจํค์ง๋ฅผ ๋์ด Service์์ ์ฌ์ฉํ๋ DTO์ ๊ตฌ๋ถํฉ๋๋ค.
- Controller์์ ์ฌ์ฉํ๋ Request/Response ๊ฐ์ฒด๋ ๋ณดํต
-
ํธ๋์ญ์
๊ด๋ฆฌ:
- ์๋น์ค ๊ณ์ธต์์
@Transactional์ ์ฌ์ฉํ์ฌ ํธ๋์ญ์ ์ ๊ด๋ฆฌํฉ๋๋ค.
- ์๋น์ค ๊ณ์ธต์์
-
DTO ๋ณํ:
- ๊ฐ์ฒด์ DTO ๊ฐ ๋ณํ ๋ก์ง์ Service ๊ณ์ธต์์ ์ํํฉ๋๋ค.
- ๋ณํ ๋ฉ์๋๋ ๋ณดํต static์ผ๋ก ๊ตฌํํ๋ฉฐ, ์๋์ ๊ฐ์ ๋ค์ด๋ฐ ๊ท์น์ ๋ฐ๋ฆ
๋๋ค.
-
of: ์ฌ๋ฌ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์ DTO๋ก ์กฐํฉํ ๋ -
from: Entity ๊ฐ์ฒด ํ๋๋ฅผ DTO๋ก ๋ณํํ ๋ -
toEntity: DTO๋ฅผ Entity๋ก ๋ณํํ ๋
-
-
JPA ๋ณ๊ฒฝ ๊ฐ์ง:
- ์ํฐํฐ ๋ด ํ๋์ ๋ณ๊ฒฝ์ ๋ณ๊ฒฝ ๊ฐ์ง(Dirty Checking)๋ฅผ ํ์ฉํฉ๋๋ค.
- ์ด๋ฅผ ์ํด ์ํฐํฐ ๋ด์ ๋ณ๋์ ํ๋ ๋ณ๊ฒฝ ๋ฉ์๋๋ฅผ ์์ฑํ๋ฉฐ, Setter ์ฌ์ฉ์ ์ง์ํฉ๋๋ค.
-
๊ฐ์ฒด ์์ฑ:
- ๊ฐ์ฒด ์์ฑ ์
new๋์ **@Builder**๋ฅผ ์ ๊ทน ์ฌ์ฉํ์ฌ ๊ฐ๋ ์ฑ๊ณผ ๋ถ๋ณ์ฑ์ ๋์ ๋๋ค.
- ๊ฐ์ฒด ์์ฑ ์
-
DTO ์ฌ์ฉ:
- Controller์ Service์ ์ฌ์ฉํ๋ DTO๋ ์ฉ๋๊ฐ ๋ค๋ฅด๋ฏ๋ก ๋ถ๋ฆฌํ์ฌ ๊ด๋ฆฌํฉ๋๋ค.
- Controller์์๋ ํด๋ผ์ด์ธํธ์์ ์์ฒญ/์๋ต์ ์ํ Request/Response ๊ฐ์ฒด๋ฅผ ์ฃผ๋ก
record๋ก ์์ฑํ๋ฉฐ,
Service์์ ๊ณตํต์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋ณ๋์ DTO ๋ ์ด์ด์ ์์ฑํฉ๋๋ค.
-
๋ค์ด๋ฐ ๊ฐ์ด๋๋ผ์ธ:
- Controller์ฉ:
{๋์ฌ}{๋ช ์ฌ}Request/{๋์ฌ}{๋ช ์ฌ}Response- ์:
UserJoinRequest,UserUpdateResponse
- ์:
- Service์ฉ:
{์ ์ ํ์ด๋ฆ}Dto
- Controller์ฉ:
-
DTO ๋ณํ ๋ฉ์๋:
- DTO ๋ด์ ๋ณํ ๋ฉ์๋๋ฅผ ์์ฑํ์ฌ Entity์์ ๋ณํ์ ๋ช ํํ๊ฒ ํฉ๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๋ฉ์๋ ์ด๋ฆ์
of,from,toEntity์ ๋๋ค.
-
Java Record:
- ๊ฐ๊ฒฐํจ๊ณผ ๋ถ๋ณ์ฑ์ ์ํด Controller์ Request/Response ๊ฐ์ฒด๋
record๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
- ๊ฐ๊ฒฐํจ๊ณผ ๋ถ๋ณ์ฑ์ ์ํด Controller์ Request/Response ๊ฐ์ฒด๋
-
์ฝ๋ ํฌ๋งทํ
ํด ์ฌ์ฉ:
- ์ฝ๋ ์คํ์ผ ํต์ผ์ฑ์ ์ํด ์๋ ํฌ๋งทํ ๋๊ตฌ(์: IntelliJ์ ์ฝ๋ ์ ๋ฆฌ ๊ธฐ๋ฅ ๋ฑ)๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค.
- ์ฐธ๊ณ ์๋ฃ: ์ฝ๋ ์๋ ํฌ๋งทํ ๊ด๋ จ ๋ธ๋ก๊ทธ
-
๋ณ์/ํจ์๋ช
:
- ๋ชจ๋ ๋ณ์์ ํจ์๋ช ์ camelCase๋ก ์์ฑํฉ๋๋ค.
-
Docker & ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ:
- ํ๋ก์ ํธ ๋ฐฐํฌ ๋ฐ ์คํ ํ๊ฒฝ์ Docker๋ฅผ ํ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค.
- ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ๋
.envํ์ผ์ ์ฌ์ฉํ๋ฉฐ, Doppler์ ๊ฐ์ ํด๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- Service ๋จ์ ํ ์คํธ: ํ์ ์์ฑ
- Controller ํตํฉ ํ ์คํธ: ํ์ ์ ์์ฑ (์ ํ์ )