티스토리 뷰

728x90
반응형

목차

     

    파이썬으로 간단한 앱과 게시판을 구현하던 중 데코레이터라는 단어를 접하게 되었다.

     

    처음에는 그냥 파이썬에서 사용되는 애너테이션이구나~ 하고 사용해 왔으나 조금 다른 점이 있다고 해서

     

    정리하고 넘어가기로.

     

    이 글에서는 먼저 애너테이션과 데코레이터의 정의를 정리한 뒤

     

    그 공통점과 차이점에 대해 간략하게 정리한다.

     

    결론부터 말하자면 둘 다 코드의 확장성, 가독성을 높이고 메타데이터를 제공하는 데 사용되며,

     

    디테일한 용도, 언어, 실행시점, 사용 대상 등에 차이가 있다.

     

    Annotation

     

    애너테이션은 직역하면 주석이라는 뜻이다.

     

    하지만 코드레벨에 사용자가 입력한 주석과 구분하기 위해 그냥 애너테이션이라고 부른다.

     

    주로 Java, Kotlin, C#등의 정적 언어에서 사용되며

     

    '@'를 사용하고, 메타데이터와 코드의 확장성, 가독성을 위해 필드, 메서드, 클래스 등에 적용된다.

     

    Decorator

     

    데코레이터는 말 그대로 '장식자'라는 뜻을 가지고 있다.

     

    Python과 같은 동적 언어에서 사용되며, 역시 '@'를 이용해 표시한다.

     

    함수와 클래스 등의 기능을 확장하거나 수정하는 데 그 목적이 있다.

     

    Commons

     

    1. '@' 기호를 사용해 적용한다.
    2. 코드의 확장성, 가독성, 메타데이터 제공 등의 목적을 가진다.

     

    Differences

     

    1. 용도
      데코레이터는 기능의 확장/수정에, 애너테이션은 메타데이터 추가에 그 중점을 둔다.
    2. 사용 언어
      데코레이터는 주로 동적 타입, 애너테이션은 주로 정적 타입 언어에서 사용한다.
    3. 실행 시점
      데코레이터는 대체로 런타임에, 애너테이션은 컴파일 타임에 정보를 제공한다.
    4. 사용 대상
      데코레이터는 함수, 클래스 등에 적용할 수 있다.
      애너테이션은 필드, 매개변수, 패키치, 메서드, 클래스 등 더 다양한 곳에 적용할 수 있다.
    5. 복잡도
      데코레이터가 애너테이션에 비해 비교적 복잡한 로직을 가질 수 있다.
    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/05   »
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31
    글 보관함