3.4. 코드 작성 규칙
3.4.1. 접근 제한자
- 클래스 필드는
private을 기본으로 합니다. - 외부 노출이 필요한 경우에만
public메서드를 제공합니다. - 패키지 내부에서만 사용되는 클래스는 패키지 프라이빗(접근 제한자 생략)으로 선언합니다.
3.4.2. import 규칙
- 와일드카드 import (
import java.util.*)는 사용하지 않습니다. - 사용하지 않는 import는 반드시 제거합니다.
- Google Java Format이 import 정렬을 자동으로 처리합니다.
3.4.3. 매직 넘버 금지
리터럴 값을 코드에 직접 사용하지 않습니다. 상수로 정의하여 의미를 명확히 합니다.
java
// 잘못된 예
if (retryCount > 3) { ... }
// 올바른 예
private static final int MAX_RETRY_COUNT = 3;
if (retryCount > MAX_RETRY_COUNT) { ... }3.4.4. Optional 사용 규칙
- 반환 타입으로
Optional을 사용합니다. 필드나 파라미터에는 사용하지 않습니다. Optional.get()을 직접 호출하지 않습니다.orElseThrow(),orElse(),ifPresent()를 사용합니다.
java
// 잘못된 예
UsersRecord record = userRepository.findById(id).get();
// 올바른 예
UsersRecord record = userRepository.findById(id)
.orElseThrow(() -> new UserNotFoundException(id));3.4.5. Null 처리
null을 반환하지 않습니다. 빈 컬렉션(Collections.emptyList()) 또는Optional을 사용합니다.- 파라미터의 null 체크는
Objects.requireNonNull()을 사용합니다. @Nullable,@NonNull어노테이션을 적극 활용합니다.
3.4.6. 문자열 처리
- 문자열 결합은
+연산자 대신String.format()또는 텍스트 블록(""")을 사용합니다. - 빈 문자열 비교는
String.isEmpty()또는String.isBlank()를 사용합니다.