[java] JSR 305을 활용한 자바 코드 리팩토링 예시

소개

자바 코드를 개발할 때, 가독성과 유지보수성을 높이기 위해 리팩토링은 중요한 요소입니다. JSR 305는 자바 코드에서 애노테이션을 사용하여 코드의 의도를 명확하게 표현할 수 있는 기능을 제공합니다. 이번 예시에서는 JSR 305을 활용하여 자바 코드를 리팩토링하는 방법을 살펴보겠습니다.

예시 코드

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

public class UserService {
    
    public void createUser(@ValidUser @Nonnull User user) {
        // 유효한 사용자를 생성하는 로직
    }
    
    public void updateUser(@ValidUser @Nullable User user) {
        // 유효한 사용자를 업데이트하는 로직
    }
    
    public void deleteUser(@Nonnull User user) {
        // 사용자를 삭제하는 로직
    }
    
}

코드 설명

위의 예시 코드에서는 javax.annotation 패키지에 있는 애노테이션들을 사용하여 사용자 관련 기능을 구현한 UserService 클래스를 보여줍니다. 이 예시에서는 @ValidUser 애노테이션을 사용하여 메서드 파라미터로 전달되는 사용자 객체가 유효한지 여부를 명시합니다. 또한 @Nonnull@Nullable 애노테이션을 사용하여 null 값이 허용되는지 여부를 표시합니다.

리팩토링

위의 코드에서는 이미 JSR 305의 애노테이션을 사용하고 있으므로 추가적인 리팩토링이 필요하지 않습니다. 그러나 JSR 305을 처음 사용하는 경우, 다음과 같은 단계로 코드를 리팩토링할 수 있습니다.

  1. JSR 305 의존성 추가
    <dependency>
        <groupId>com.google.code.findbugs</groupId>
        <artifactId>jsr305</artifactId>
        <version>3.0.2</version>
    </dependency>
    
  2. 애노테이션 적용 JSR 305에서 제공하는 애노테이션을 사용하여 코드에 명확한 의미를 부여합니다. 예를 들어, @Nonnull 애노테이션은 null 값을 허용하지 않음을 나타내며, @Nullable 애노테이션은 null 값을 허용함을 나타냅니다. 이러한 애노테이션을 적절한 메서드 파라미터에 사용하여 의도를 명확히 전달할 수 있습니다.

  3. 애노테이션 처리 리팩토링한 코드를 사용할 때, JSR 305 애노테이션을 처리해야 합니다. 대부분의 개발 도구에서는 JSR 305 애노테이션을 인식하여 경고나 오류를 표시해줍니다. 이를 통해 개발자는 코드를 작성할 때부터 유효성을 검증할 수 있습니다.

결론

JSR 305을 활용하면 자바 코드의 가독성과 유지보수성을 높일 수 있습니다. 애노테이션을 통해 코드의 의도를 명확히 표현하고, 유효성 검증을 자동화하여 버그를 예방할 수 있습니다. 자바 프로젝트에서 코드 리팩토링을 고려할 때는 JSR 305을 활용해보세요.

참고 자료