-
Notifications
You must be signed in to change notification settings - Fork 6
BE 컨벤션
준팍(junpak) edited this page Jul 11, 2023
·
1 revision
괜찮을지도 Java Style Guide
는 우아한테크코스 Java Style Guide를 기준으로 작성되었습니다.
우아한테크코스 Java Style Guide
와 다른 부분, 추가적인 부분을 아래 명시합니다.
기존 내용과 다른 부분은 제목에 목차
를 명시, 새로 추가된 부분은 ✅ 를 표기하였습니다.
아래 순서에 따라 클래스 내용을 작성합니다.
- 상수
- 멤버 변수(필드)
- 생성자
- 정적 팩토리 메서드
- 일반 메서드
- getter
- equals & hashCode
일반 메서드 간 순서는 접근제어자 관계 없이, 메서드 호출 순서대로 위→ 아래로 작성합니다.
기존 컨벤션에 덧붙여,
-
파라미터의 개수가 3개 이상이면 각 파라미터를 쉼표 (
,
) 단위로 줄바꿈합니다. -
파라미터의 개수가 3개 미만이지만 타입 혹은 변수명의 길이로 인해 열 제한(120자)을 초과할 경우 각 파라미터를 쉼표 (
,
) 단위로 줄바꿈합니다.public Line(List<Station> stations) { this.id = id; this.name = name; this.stations = stations; } public Line( Long id, String name, List<Station> stations ) { this.id = id; this.name = name; this.stations = stations; }
-
한 줄에는 한 개의 점(
.
)만 허용합니다.memberRepository.findAll() .stream() .map() ...
- 하나의 메서드 길이는 최대 15줄입니다. 기준은 메서드 선언부를 제외한, 블록의 줄 수입니다.
- 들여쓰기(indent)의 depth가 2를 넘지 않도록 합니다. 1까지만 허용합니다.
- 단, 이 제한으로 인해 메서드를 분리하는 것이 가독성 저하로 이어질 경우 구성원 간 합의 하에 일부 허용이 가능합니다.
멤버 변수(필드) 외에는, 특별한 이유가 없다면 final
키워드를 사용하지 않습니다.
- 기계적으로 적용한
final
키워드로 인한 가독성 저하 및 팀원간 코드 통일성 파괴를 피하기 위함입니다. - 단, 구현 내용 상
final
키워드의 적용이 필요하다고 생각되는 경우 구성원 간 합의 하에 일부 허용이 가능합니다.
- Builder 패턴, Getter 메서드, 빈 생성자에 대해서는 Lombok 어노테이션으로 대체합니다.
- 반복적인 코드 사용을 줄여 코드 편의와 가독성을 높이기 위함입니다.
-
@Builder
,@Getter
,@NoArgsConstructor
외의 어노테이션 사용을 금지합니다.- 생성자의 파라미터 순서 변화로 발생할 수 있는 오류를 방지하기 위해
@AllArgsConstructor
,@RequiredArgsConstructor
의 사용을 금지합니다. -
@NoArgsConstructor
의 접근제어자는protected
이하로 선언합니다.
- 생성자의 파라미터 순서 변화로 발생할 수 있는 오류를 방지하기 위해
- 테스트 메서드 이름은 영문으로 작성합니다.
- 접미사로
~Test
는 붙이지 않습니다.- 네이밍 컨벤션 : 대상 메서드 이름_성공 실패 여부
- DisplayName에
~하면 ~한다
라고 명시합니다.- 예외테스트의 경우, 어떤 예외인지까지 명시
- 바디에
given
,when
,then
주석을 반드시 붙입니다.
void createTopic_Success() {
// 성공 테스트
}
void createTopic_FailByNonExistingPlace() {
// 실패 테스트, 원인 명시
}
void createTopic_FailByInvalidName() {
// 실패 테스트, 원인 명시
}
Copyright © 2023 woowacourse Project - MapBeFine