Dart 주석

Dart 언어는 주석을 총 3가지 지원합니다:한 줄 주석, 여러 줄 주석, 문서 주석;컴파일러는 일반 주석 텍스트를 무시하며 문서 주석만 코드 문서 생성에 사용할 수 있습니다.

주석의 목적은 개발자가 코드의 기능과 역할을 쉽게 파악할 수 있도록 돕는 것입니다. 또한 임시로 코드를 비활성화하여 디버깅 및 문제점 탐색에 활용할 수도 있습니다.

문서 주석은 전용 도구로 코드 API 도움말 문서를 자동 생성할 수 있습니다. 본인이 작성한 코드 스펙 확인은 물론 다른 사람이 라이브러리를 사용할 때 참고 자료로 활용됩니다.

C/C++/Java/C# 등 C 계열 언어를 공부했다면 매우 빠르게 이해할 수 있습니다. 문법이 거의 동일합니다.

1、한 줄 주석 //

  1. //로 시작;
  2. //부터 줄 끝까지 모든 내용은 Dart 컴파일러가 무시;
  3. 현재 줄에만 적용되며 여러 줄에 걸쳐 사용할 수 없음.

예시

void main() {
  // TODO: 라마 인사 공장 추상 클래스로 리팩토링?
  print('라마 농장에 오신 것을 환영합니다!');
}
Code language: JavaScript (javascript)

2、여러 줄 주석 /* */

  1. 시작 표시 /*, 종료 표시 */
  2. /**/ 사이 모든 내용은 컴파일러가 무시(아래 문서 주석 제외);
  3. 중첩 작성 지원.

예시

void main() {
  /*
   * 라마 키우는 일이 힘들어 닭을 키우는 것을 고려해볼 수 있다

  Llama larry = Llama();
  larry.feed();
  larry.exercise();
  larry.clean();
   */
}

위 코드에서 중괄호 안의 모든 코드는 주석 처리되어 컴파일되지 않으며 컴파일러가 해당 부분을 무시합니다.

3、문서 주석

공식 API 문서 생성에 사용하며 다른 개발자가 라이브러리를 사용할 때 클래스, 함수 인터페이스, 매개변수 등 사용 설명서로 참고할 수 있습니다.

1. 두 가지 작성 형식
  • 한 줄 문서 주석: 여러 줄에 걸쳐 /// 사용, 여러 줄 문서 주석과 동일한 효과. 슬래시가 세 개라는 점 유의.
  • 여러 줄 문서 주석: /**로 시작, */로 종료. 시작 부분에 별표 하나가 추가된 점 유의.
2. 핵심 문법 규칙
  1. 문서 주석 내 일반 텍스트는 코드 분석기가 무시;
  2. 대괄호 []로 식별자를 감싸는 특수 문법: 클래스, 메서드, 필드, 최상위 변수, 함수, 매개변수를 참조 가능;
  3. 대괄호 안 이름은 주석 대상 코드의 어휘 범위 내에서 해석;
  4. 문서 생성 후 [식별자]는 해당 문서로 이동하는 하이퍼링크로 자동 변환.

예시

// 일반 한 줄 주석: 사료 클래스 정의
class Food {
  String type;
  // 한 줄 주석: 사료 묶음 수
  int baleCount;

  Food(this.type, this.baleCount);
}

/*
일반 여러 줄 주석:
운동 타입 열거형, 라마 운동 메서드에 사용
중첩 주석 예시
/* 내부 중첩 주석 */
*/
enum Activity {
  walk,
  run,
  graze
}

/// 길들여진 남미 낙타과 동물(라마, 학명Lama glama)
///
/// 콜럼버스 이전 안데스 문명은 라마를 식량과 운송 가축으로 활용했습니다.
///
/// 다른 동물처럼 라마는 먹이가 필요합니다. [Food] 타입 사료를 주고 [feed] 메서드를 호출하세요.
class Llama {
  String? name;

  /// 지정한 [food] 사료를 라마에게 먹이기
  ///
  /// 한 마리 라마는 일주일에 건초 한 묶음을 소비하는 것이 일반적입니다.
  void feed(Food food) {
    // 한 줄 주석: 먹이 로그 출력
    print("${name}이 ${food.baleCount}묶음의 ${food.type}을 먹었습니다");
  }

  /// 라마에게 [activity] 운동을 [timeLimit]분간 시키기
  void exercise(Activity activity, int timeLimit) {
    print("${name}이 ${activity.name} 운동을 ${timeLimit}분간 했습니다");
  }
}

void main() {
  // TODO:추후 여러 마리 라마 관리 기능 확장
  Llama larry = Llama();
  larry.name = "라리";

  // 건초 사료 생성
  Food hay = Food("건초", 1);
  larry.feed(hay);

  // 라마 20분 산책
  larry.exercise(Activity.walk, 20);
}

문서 생성 후:[feed]는 현재 클래스의 feed 메서드 문서로 링크되고, [Food]는 Food 클래스 문서로 링크됩니다.

D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
라리가 1묶음의 건초을 먹었습니다
라리가 walk 운동을 20분간 했습니다

D:\dartdemo\firstdart>dart doc
Documenting firstdart...
Discovering libraries...
Linking elements...
Precaching local docs for 136851 elements...
Initialized dartdoc with 50 libraries
Generating docs for library firstdart.dart from package:firstdart/firstdart.dart...
Found 0 warnings and 0 errors.
Documented 1 public library in 10.3 seconds
Success! Docs generated into d:\dartdemo\firstdart\doc\api

실행 후 프로젝트 폴더 안에 doc 폴더가 생성되며 열어보면 아래 문서를 확인할 수 있습니다

연계 도구

  1. 문서 생성 도구dart doc 역할:Dart 소스 코드를 분석해 HTML 형식 프로젝트 API 문서 자동 생성. Dart 공식 API 문서도 이 도구로 만들어집니다.
  2. 주석 작성 규범 참고:공식 가이드 《Effective Dart: Documentation》, 표준화된 주석 구조와 스타일 확인 가능.

요약

비교표

주석 종류시작 기호여러 줄 지원중첩 지원사용 용도
한 줄 주석//미지원, 현재 줄만불가임시 한 줄 메모, 코드 TODO
일반 여러 줄 주석/* */임의의 여러 줄 지원중첩 가능긴 코드 블록 일괄 주석 처리, 긴 설명 작성
문서 주석/// / /** */여러 줄 지원중첩 권장하지 않음클래스/메서드/변수 API 설명 작성, 공식 문서 생성, []로 식별자 링크 지원

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다