-
Notifications
You must be signed in to change notification settings - Fork 6
BE 코딩 컨벤션
이성준 edited this page Nov 14, 2022
·
2 revisions
[캠퍼스 핵데이 Java 코딩 컨벤션](https://naver.github.io/hackday-conventions-java/#1-var-per-declaration)
- 어노테이션은 길이가 짧은순으로, 길이가 같으면 중요도가 높은 순으로,
- 도메인의 기본생성자의 접근지시자는
Protected
로 사용하기 -
Builder
는 생성자레벨에서 사용하기 -
Setter
지양하기 -
@Column
: 컬럼 네임도 클래스 네임과 마찬가지로 반드시 지정하기 -
nullable
,unique
,updatable
등의 기능을 적극 활용하기, 이메일일 경우nullable
,unique
같은 속성을 반드시 추가하기
ex)
@Entity
@Getter
@Table(name = "member")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false)
private Long id;
@Column(name = "email", nullable = false, unique = true, updatable = false, length = 50)
private String email;
@Builder
public Member(String email) {
this.email = email;
}
}
-
ResponseEntity
사용시 빌더형식으로 사용하자
ex)
@GetMapping("/questions/{id}")
public ResponseEntity<DetailQuestionResponse> get(@PathVariable Long id) {
return ResponseEntity.ok(questionService.get(id));
}
-
DTO
변환시 빌더패턴으로 -
DTO
생성시 요청 일때 **request, 응답일때 **response
-
DTO
→Entity
변환은 서비스 계층에서 하기 -
Method
는 CRUD 순서로 - 서비스가 단일책임원칙을 잘 지키고 있는지 확인하고 아니다 싶으면 분리한다.
- 도메인 관련 기능을 세분화하여 Service를 만든다(ex. OrderRegisterService, OrderStatusService .....)
- 조회만 한다면
@Transaction(readOnly = true)
꼭 붙이기
- 예외 이름은 Exception으로 끝내기
ex) emailDuplicateException