과제 1. 어노테이션

과제 1. 어노테이션

어노테이션을 사용하는 이유 (효과) 는 무엇일까?

어노테이션은 프로그램을 작성할 때 필요한 많은 작성들에 대해 도움을 준다고 생각한다. 어노테이션은 소스 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시키기 위해 작성한다. 예를 들면 다른 개발자와 협업을 한다고 생각하고 내가 만들어둔 어노테이션을 이용하면 어노테이션 아래의 코드들은 컴파일 시에 코드에 대해 추가적인 검사를 할 수 있다. 이를 통해 코드 분석이나 코드 검증이 가능하고 어노테이션의 명시적인 선언을 통해 잘못 작성하는 것을 방지할 수 있다고 생각한다. 이러한 어노테이션의 장점은 코드를 명확하게 만들고 반복적인 패턴을 줄여 깔끔한 코드를 만들어주고 협업 시의 오류를 만들어주고 클린한 코드를 만들어준다고 생각한다.

나만의 어노테이션은 어떻게 만들 수 있을까?

위에서 말한 것처럼 반복적인 패턴임을 명시하고 코드를 잘못 작성하는 것을 방지하며 간소화시켜준다.
이러한 작업들을 하나의 패턴으로 만드는 것이라고 생각한다.
나만의 어노테이션을 만들기 위해서는 @interface를 키워드를 사용한다.
그 후 어노테이션의 요소를 정의해준다. 이러한 요소들은 어노테이션이 적용될 때 설정할 수 있는 속성을 정의한다.
자바는 어노테이션을 위한 몇 가지 내장 메타 어노테이션(meta-annotation)을 제공한다. 이 메타 어노테이션들은 어노테이션의 동작 방식을 정의하는 데 사용된다.

나는 스포츠를 좋아하기 때문에 스포츠에 관련된 어노테이션을 만들어보겠다.
선수의 성적을 기록하는 어노테이션을 만들어보자.
1. 어노테이션 정의

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME) // 런타임에 정보를 유지
@Target(ElementType.METHOD) // 메서드에 적용 가능
public @interface RecordAthletePerformance {
    String athleteName(); // 선수 이름
    String sport(); // 경기 종목
    String performance(); // 성적 (예: 시간, 점수 등)
}

2. 사용 예제

public class SportsService {

    @RecordAthletePerformance(athleteName = "Enzo", sport = "Football", performance = "10Game 5goals 5assists")
    public void recordSprintPerformance() {
        // 실제 경기 성적을 기록하는 로직
        System.out.println("Recording performance for Football match");
    }
}

이 예제에서는 SportsService 클래스의 recordSprintPerformance 메서드에 RecordAthletePerformance 어노테이션을 적용했다. 메서드가 호출될 때, 해당 선수의 성적을 기록하는 로직을 구현할 수 있다.

이러한 방식으로 나만의 어노테이션을 사용하면, 코드 내에서 직접적으로 선수의 성적과 관련된 메타데이터를 관리할 수 있으며, 이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있다.

댓글을 작성해보세요.

채널톡 아이콘