Programming

Rust기초 알기 - 3.5 주석 - comment - decorator

IT오이시이 2023. 6. 21. 23:07
728x90

 

Rust기초알기(3) - 기본 문법
3.1 변수와 데이터 타입
3.2 제어문 (조건문, 반복문)
3.3 함수 정의와 호출
3.4 모듈과 패키지
3.5 주석- comment - decorator

[목차] Rust Programming - Rust 기초 알기 목차.Zip

#Rust프로그래밍  #Rust언어기초 #Rust기초문법 #Rust기초알기

 

 

Rust기초 알기 - 3.5 주석 - comment - decorator 

 

호랑이는 죽어서 가죽을 남기고 개발자는 주석을 남긴다.

 
20년 전 제가 처음 프로그램을 짤 때는 프로그램 명세로 프로그램 상단에 프로그램명, 개발자 이름, 작성일, 수정일, 수정자의 이력을 남겨 두었습니다. 그래서 수년이 지난 프로그램에 이름을 남깁니다. ㅎㅎ  부끄럽지 않도록 짜라는 것이지요 ㅎㅎ

주석이란?

각 개발 언어들은 주석을 이용하여  코드의 설명이나 문서화를 할 수 있습니다. 흔히 주석은 프로그램의 이해와 특정 기능에 대한 논리를 정리해서 실수를 방지하거나 쉽게 코드의 맥락을 이해할 수 있도록 히스토리를  제공하는 것입니다.
일종의 개발 원작자의 노하우를 남겨 둠으로써 다른 개발자가 수정을 하거나 , 오류가 있을 경우 대처하기 위해서 고민했던 내용을 히스토리로 남겨 두는 것입니다. 다른 개발자를 위한 배려라고 해야겠지요.
 

주석의 역할

프로그램의 기본은 주석이 필요합니다. 프로그램의 히스토리를 알려주거나 특정 기능에 대하여 왜 이렇게 구현을 했는지 또는 전체적인 맥락을 쉽게 알려주기 위해서 주석을 이용합니다.
 

주석의 역할 정리

1. 코드 설명: 주석은 코드를 이해하기 위한 설명이나 의도를 기록하는 역할을 합니다. 코드의 의미와 목적을 설명하여 다른 개발자가 빠르게 이해할 수 있도록 돕습니다.

2. 문서화: 주석은 코드를 문서화하는 데 사용됩니다. Rust에서는 doc 주석을 활용하여 API 설명이나 모듈의 사용법을 문서화합니다. 이를 통해 API 문서를 생성하고 코드의 사용법을 명확하게 전달할 수 있습니다.

3. 코드의 이해와 유지 보수: 주석은 코드의 의도와 동작을 이해하고, 코드를 수정하거나 유지 보수하는 데 도움을 줍니다. 코드를 다시 보게 될 때 주석을 통해 코드의 목적과 작동 방식을 파악할 수 있습니다.

4. 디버깅: 주석은 코드의 디버깅에 활용됩니다. 문제가 발생하는 코드 부분을 주석 처리하여 해당 코드를 실행하지 않게 하여 문제의 원인을 파악하는 데 도움을 줍니다.

5. 팀 작업: 주석은 팀 내에서 코드의 이해를 공유하고 의사소통하는 데 도움이 됩니다. 다른 개발자들과 협업할 때 주석을 사용하여 코드를 문서화하고 의도를 공유할 수 있습니다.
 
 

Rust의 주석

모든 개발 언어들은 두 가지 주석 표기가 있습니다. 하나는 한 줄을 주석으로 표현하는 것 다른 하나는 여러 줄을 주석으로 표현하는 것입니다.

1. 한 줄 주석 (Line comments):

// 기호를 사용하여 한 줄 주석을 작성할 수 있습니다.
// 기호 뒤에 오는 모든 내용은 주석으로 처리되며, 그 줄의 끝까지 유효합니다.

// 이 줄은 주석입니다.
let x = 5; // 이 줄은 코드이며, 뒤에 주석이 있습니다.

 

2. 범위 주석 (Block comments, 블록주석):


/*와 */ 사이에 있는 내용은 주석으로 처리됩니다.
여러 줄에 걸쳐 주석을 작성할 수 있으며, 중첩된 주석도 사용할 수 있습니다.

// [한줄 주석] 이것은 한 줄 주석입니다. 이 줄은 코드가 아니며, 컴파일러에 의해 무시됩니다.

fn add(a: i32, b: i32) -> i32 {
    // 이 함수는 두 개의 정수를 더하여 결과를 반환합니다.
    return a + b;
}

/* [블럭주석] 아래 코드는 덧셈 함수를 호출하는 예시입니다.
    -- 여러 줄을 주석 블럭으로 표현 합니다. --
   add 함수에 두 개의 정수를 전달하고 결과를 출력합니다. */
   
fn main() {
    let result = add(5, 3);
    println!("결과: {}", result);
}

* 주석은 Rust 컴파일러에 의해 무시되기 때문에 프로그램의 실행에 영향을 주지 않습니다. 주석은 코드의 가독성을 향상하고, 다른 개발자들에게 코드를 이해하는 데 도움을 줄 수 있습니다.
 

[추가 참고 사항]

Annotation과 Comment  &  데코레이터(decorator) :  한글로  "주석"  인가?
 

□ Annotation (주석)

Annotation은 일반적인 문서나 논문의 보조 설명을 위한 주석 용도로 사용하는 개념으로 학문적인 내용에 대한 보조 설명 또는 마킹을 하는 것입니다.  (프로그래밍에서는 Annotaion을 사용하지 않습니다.)
예를 들어 책에 펜으로 보조 설명을 적거나, 형광펜으로 하일라이팅을 하거나, 포스트잇 등으로 추가 설명을  적어서 붙여 놓는 등이 대표적인 주석의 예라 할 수 있습니다.
 

□ Comment (코멘트)

반면 Comment는 소프트웨어 개발자들은 대체로 코멘트를  주석(comment)이라고 하며 프로그램 실행에 아무런 영향을 끼치지 않으면서 코드 쉽게 읽기를 위한 보조 설명이나 문서화에만 관여하는 문법입니다.

  • 코드에 메모나 설명을 추가하기 위해 사용
  • 코드 실행에는 영향을 주지 않으며, 컴파일러나 인터프리터에 의해 무시됨
  • 주로 코드를 이해하는 데 도움이 되도록 개발자에게 정보를 전달 
  • 코드의 가독성과 유지 보수성을 향상하는 데 중점을 둠
  • 코드의 의도, 동작, 알고리즘 등을 설명하거나 코드의 일부를 임시로 비활성화하거나 디버깅 정보를 기록

 

□ 데코레이터(decorator)

실제 개발 언어에서 데코레이터(decorator)는 일반적인 프로그램을 설명하는 주석의 개념보다는 프로그램의 기능을 확장하는데 활용됩니다.
 ※ Rust에는 데코레이터 개념이 없습니다. 참고로 파이선의 예시를 들었습니다.
데코레이터는 주로 함수나 클래스에 추가적인 기능을 부여하기 위해 사용되는 개념입니다. 주로 코드의 실행 흐름이나 동작을 변경하거나 기능을 추가하는 역할을 합니다.

  • 데코레이터는 주로 함수나 클래스에 추가적인 기능을 부여하기 위해 사용되는 개념
  • 일반적으로 @ 기호를 사용하여 함수나 클래스 위에 데코레이터를 표시
  • 주로 함수의 호출 전후에 추가 동작을 수행하거나 클래스에 믹스인(mixin) 기능을 제공하는 데 사용
  • 코드를 수정하지 않고도 기존 함수나 클래스의 동작을 확장하거나 수정할 수 있음
  • 코드의 구조를 변경하는 데 사용되므로, 코드의 동작이나 기능에 직접적인 영향이 있음

 

□ 참고로 파이썬에서 Decorator 사용 예시로  입니다.

def hello_decorator(func):
    def wrapper():
        print("함수 실행 전")
        func()
        print("함수 실행 후")
    return wrapper

@hello_decorator
def greeting():
    print("안녕하세요!")

greeting()

* 위 예시에서 hello_decorator 함수는 데코레이터 함수로 정의되어 있습니다. 이 함수는 다른 함수를 인자로 받아 해당 함수를 감싸는 래퍼(wrapper) 함수를 반환합니다. 래퍼 함수는 원본 함수 실행 전후에 추가 동작을 수행합니다.

@hello_decorator는 데코레이터를 greet 함수 위에 표시하면 다음과 같은 출력을 하게 됩니다. greeting()을 hello_decorator의 인자로 넘겨서 감싸게 되는 문법입니다.

함수 실행 전
안녕하세요!  # greeting() -> func() 로 전달 됩니다.
함수 실행 후

데코레이터를 사용하여 함수를 감싸는 방식으로 기능을 확장하고 코드의 재사용성과 가독성을 높일 수 있습니다.

728x90
반응형