-
Notifications
You must be signed in to change notification settings - Fork 1
Code convention
grolarkim edited this page Aug 20, 2023
·
11 revisions
์ฝ๋ ์คํ์ผ์ ๊ฒฝ์ฐ Java Google Style Guide๋ฅผ ์ฌ์ฉํ๋ ์ผ๋ถ๋ฅผ ์์ ํ์ฌ ์ฌ์ฉํ์๋ค.
- Tab size๋
4
๋ก ์ฌ์ฉํ๋ค. (๊ตฌ๊ธ ์คํ์ผ :2
)
- ๋ฉ์๋์ ์ต๋ ๊ธธ์ด๋ ๊ถ์ฅ 10์ค ์ด๋ด, ์ต๋ 15์ค ์ด๋ด๋ก ํ๋ค.
- ๊ฐ์ฒด๋ฅผ ์กฐํํ๋ ๋ฉ์๋๋ฅผ ๋ง๋ค ์ ๋ช
๋ช
ํ๋ ๋ฐฉ๋ฒ, get๊ณผ find๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ ์์ธ ์ฒ๋ฆฌ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์์ฑํ๋ค.
- get โ ๊ฐ์ฒด๋ฅผ ์ง์ ๋ฐํ, ๊ฐ์ฒด๊ฐ ์๋ค๋ฉด ์์ธ๋ฅผ ๋์ง
- find โ Optional๋ก ๊ฐ์ฒด๋ฅผ ๊ฐ์ธ์ ๋ฐํ
- ์ธํฐํ์ด์ค โ ํ์ฉ์ฌ๋ ๋ช ์ฌ๋ก ์ด๋ฆ์ ์ง๋๋ค.
- ํด๋์ค โ ๋ช ์ฌ๋ก ์ด๋ฆ์ ์ง๋๋ค.
- ์์ฒญ : Request๋ฅผ ์ ๋ฏธ์ฌ๋ก ๊ฐ์ง๋ค. ์)
LoginRequest
- ์๋ต : Response๋ฅผ ์ ๋ฏธ์ฌ๋ก ๊ฐ์ง๋ค. ์)
LoginResponse
- Controller -> DTO์ @Valid ํ์ฉํ์ฌ Notnull, NotBlank, Size ๋ฑ ์ฌ์ ์กฐ๊ฑด์ ๊ฒ์ฆํ๋ค.
- Service -> Repository์์ ๋ฐํํ Optional.empty ๋ฑ ๋น์ฆ๋์ค ํ๋ก์ฐ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๊ฒ์ฆํ๋ค.
- Domain -> ๋๋ฉ์ธ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฒ์ฆํ๋ค. ์)
ํ๋งค ์์ ์๊ฐ์ด ํ๋งค ์ข ๋ฃ ์๊ฐ๋ณด๋ค ์์์ผ ํ๋ค.
๋ฑ - Repository, Entity -> ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ ์ด๋ธ์ ์ ์ฝ ์กฐ๊ฑด์ ๋ช ์ํ๋ ์ถ๊ฐ์ ์ธ ๊ฒ์ฆ์ ํ์ง ์๋๋ค.
- Annotation์ ์์๋ ์งง์ ๊ฒ์ด ์๋ก, ๊ธด ๊ฒ์ด ์๋๋ก ๊ฐ๋ค.
- ์์
@Service @RequiredArgsConstructor @Transactional(readOnly = true) public class OrderService implements OrderUseCase {
- ๋ถ๋ณ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ์ ์ธ์
final
์ ๋ถ์ธ๋ค. - ์์
@Override @Transactional public OrderIdResponse orderCartByCartIdAndUserId(final long cartId, final long userId) { final Cart cart = cartConnector.findByCartIdAndUserId(cartId, userId) .orElseThrow(() -> new DoesNotFindCartException(cartId, userId)); final Order order = OrderMapper.toDomain(idGenerator, userId, cart, timeUtil.now()); orderRepository.persist(order); return new OrderIdResponse(order.getId()); }
- ๋จ์ : ํด๋์ค๋จ์, ๊ฐ์ ๋ ์ด์ด์์ ๋ค๋ฅธ ๋ ์ด์ด์ ์ฐธ์กฐ๊ฐ ํ์์๋ ๊ฒ์ ํ ์คํธํ๋ค.
- ํตํฉ : ํด๋์ค๋จ์, ๋ค๋ฅธ layer๋ ์์กด์ฑ์ ๋ฐฉํฅ์๋ฐ๋ผ ์ ํ์ ์ผ๋ก Mocking ํ์ฌ ํ ์คํธํ๋ค.
- ์ธ์ : API๋ถํฐ ์ ์ฒด๋ฅผ ํ ์คํธํ๋ค. ํด๋์ค mocking์ ์๋ค. Tomcat๊ณผ DB๋ ํ ์คํธ์ฉ Mocking์ ์ฌ์ฉํ๋ค.
- Controller โ ์ธ์ํ ์คํธ๋ก ๋์ฒดํ๋ค.
- Service โ ํตํฉํ ์คํธ๋ก ์์ฑํ๋ฉด์ ๋น์ฆ๋์ค ํ๋ก์ฐ๋ฅผ ๊ฒ์ฆํ๋ค.
- Domain โ ๋จ์ ํ ์คํธ๋ก ์์ฑํ๋ฉด์ ์ต๋ํ๊ผผ๊ผผํ, ๋์, ์์ธ, ๋ฐ๋ก๊ฐ์๊ฑฐ ์๊ฐํ๋ฉด์ ํ ์คํธํ๋ค.
- Repository โ ํตํฉํ ์คํธ๋ก ์์ฑํ๋ค.
- ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด์
@Nested
๋ฅผ ํ์ฉํ ๊ณ์ธต ๊ตฌ์กฐ๋ก ํ ์คํธ๋ฅผ ์์ฑํ๋ค. - ์์
@DisplayName("OrderService ํด๋์ค") @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = OrderService.class) class OrderServiceTest { @Nested @DisplayName("orderCartByCartIdAndUserId ๋ฉ์๋๋") class orderCartByCartIdAndUserIdMethod { @Test @DisplayName("cartId์ userId๋ฅผ ๋ฐ์, ์ฃผ๋ฌธ์ ์ฑ๊ณตํ๋ฉด, cartId๋ฅผ ๋ฐํํ๋ค.") void returnCartIdWhenOrderSuccess() { // given, when, then ... } } }