Search
Duplicate

Code Convention

패키지 구조

src
java
domain
user
controller
service
impl
mapper
dto
entity
dto
controller
service
repository
entity
recipe
review
global
sample

Naming

축약어를 최소화하자
웬만하면 다 써주자
길이가 100자가 넘어가도 나쁠게 하나도 없다
클래스 명은 파스칼 케이스
시작을 대문자로 시작하며, 나머지는 단어의 시작마다 대문자
약어도 시작을 소문자로 적음
ex) URL → Url
ex) public class BoardController {…}
필드 명, 메소드 명은 카멜 케이스
시작을 소문자로 시작하며, 나머지는 단어의 시작마다 대문자
약어도 시작을 소문자로 적음
ex) URL → Url
ex) private String imageUrl;
필드는 명사로 시작과 끝을 맺음
필드는 인스턴스의 상태를 나타냄
메소드는 동사로 시작 (끝은 명사로 맺어도 됨)
메소드는 인스턴스의 행위를 나타냄

Package

소문자로 작명
띄워쓰기 금지
영어 소문자와 숫자로만 적음
특수문자 금지
ex) org.springeel.config_jpa
옳바른 예시
org.springeel.config.jpa2

Annotation

Lombok 관련된 annotation은 맨 위로 작성
길이가 짧은 것부터 위에서 작성하기
옵션은 제외한 길이
옳바른 예시
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor @Table(name = "TB_BOARD") @Entity public class Board {}
Java
복사
@RequiredArgsConstructor @Slf4j @RequestMapping("/api/v1") @RestController public class Controller {}
Java
복사

Method

인자 값들은 final로 설정해두기
변경이 필요하다면, final 달아주지 말기
인자마다 개행 처리해두기
메소드의 인자 부분에 닫는 소괄호와 여는 중괄호는 다음 줄에 놔두기
옳은 예시
@Builder public User( final String email, final String password, final String nickname, final UserRole role ) { // 이 부분 this.email = email; this.password = password; this.nickname = nickname; this.role = role; }
Java
복사

Entity

엔티티 필드값 수정은 엔티티 클래스에서 메소드를 만들어서 사용한다.
update 해줄 때는 @Transactional 붙여주기
연관관계 부분은 필드중 맨 밑에다가 생성
양방향인 부분은 연관관계 중에서도 맨 마지막에 해두기
생성자 레벨에 @Builder 달아주기
id는 넣어주지 않도록 한다.
@Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Table(name = "TB_BOARD") @Entity public class Board { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @Builder public Board(String name){ this.name = name; } }
Java
복사

DTO

record 사용하기
이름/행위/{request/response}/Dto
BoardCreateRequestDto
BoardCreateResponseDto
Controller 전용 DTO와 Service 전용 DTO를 나눠서 작성하기
@PostMapping public void create( @RequestBody TestCreateControllerRequestDto controllerRequestDto ) { TestCreateServiceRequestDto serviceRequestDto = TestMapper.INSTANCE.toTestServiceRequestDto(controllerRequestDto); testService.create(serviceRequestDto); }
Java
복사
생성/단건조회/전체조회/수정/삭제 - create/read/readAll/update/delete
예외가 있을 수 있음

Controller

반환 타입은 ResponseEntity로 통일

Repository

단일 값을 받아 올 때는 Optional 사용하기
단일 값을 받아 올 때는 findBy… 로 작명
2개 이상의 값을 받아 올 때는 findAllBy… 로 작명
필드 명을 구분해주기 위해서 _ 사용하지 말기
ex) findByUser_IdfindByUserId
단, 문법적으로 필요하다면 사용하기
ex) findByRecipe_Review
웬만하면 id로 검색하지 말고, 엔티티로 검색하기 (outer join 사용을 방지할 수 있음)
ex) findByIdAndUserIdfindByIdAndUser

Intellij

Build and run usingRun tests using 해두기
메소드 생성 시, final 자동 생성시키게 설정해두기

코딩 스타일 적용하기

intellij-java-google-style.xml
21.6KB
구글 코딩 스타일 가이드 문서 https://google.github.io/styleguide/javaguide.html

Push 하기 전에 해야 될 일

코드 포맷팅하기
ctrl + alt + l
ctrl + alt + o