[java] JSR 305을 이용한 자바 코드 리팩토링 가이드

개요

자바 코드의 가독성과 유지보수성은 중요한 요소입니다. 코드 리팩토링은 이러한 요소들을 향상시키기 위해 필요한 작업입니다. 이번 가이드에서는 JSR 305 애노테이션을 이용하여 자바 코드를 리팩토링하는 방법에 대해 알아보겠습니다.

JSR 305은 자바 코드에 메타데이터를 추가하기 위한 애노테이션 집합입니다. 이 애노테이션들은 코드의 의도를 명확하게 표현하고 오류를 방지하는 데 도움을 줍니다.

애노테이션 소개

JSR 305은 다양한 애노테이션을 제공합니다. 이 가이드에서는 주요한 애노테이션들에 대해 알아보겠습니다.

기타 다른 애노테이션들(@CheckForNull, @CheckReturnValue 등)도 있지만 이번 가이드에서는 위 두 개에 초점을 맞출 것입니다.

사용 예시

자바 코드에서 JSR 305 애노테이션을 사용하는 방법을 살펴봅시다.

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

public class ExampleClass {
    public static void main(String[] args) {
        String name = null;
        printName(name);
    }
    
    public static void printName(@Nullable String name) {
        System.out.println("Name: " + name);
    }
}

위의 예시에서 printName() 메서드의 매개변수 name@Nullable 애노테이션이 추가되었습니다. 이렇게 함으로써 name 변수에 null 값이 전달되더라도 컴파일러는 경고를 표시하지 않습니다.

JSR 305과 Lombok 사용하기

JSR 305 애노테이션은 코드의 가독성을 높이는 데 도움을 줍니다. 그러나 많은 애노테이션을 추가하는 작업은 번거로울 수 있습니다. 이러한 번거로움을 덜기 위해 Lombok과 함께 사용할 수도 있습니다.

Lombok은 자동으로 코드를 생성해주는 라이브러리로, @NonNull이나 @Nullable과 같은 애노테이션을 자동으로 추가해줄 수 있습니다. 다음은 Lombok을 사용하여 위의 예시를 수정한 코드입니다.

import lombok.NonNull;

public class ExampleClass {
    public static void main(String[] args) {
        String name = null;
        printName(name);
    }
    
    public static void printName(@NonNull String name) {
        System.out.println("Name: " + name);
    }
}

위의 코드에서는 Lombok의 @NonNull 애노테이션을 사용하여 printName() 메서드의 매개변수가 null이 아니어야 함을 나타냈습니다.

결론

JSR 305 애노테이션은 자바 코드의 가독성과 유지보수성을 향상시키는 데 도움을 줍니다. 이 가이드를 통해 JSR 305 애노테이션의 사용법을 익히고, Lombok과 함께 활용해 더욱 효과적인 코드 리팩토링을 수행해보세요.

참고 자료