Документация по исходному коду в Racket (Схема) - PullRequest
0 голосов
/ 27 декабря 2018

Можно ли написать документацию в исходных файлах, например, в Common Lisp или Go, и извлечь ее из исходных файлов?Или все используют Scribble для документирования своего кода?

1 Ответ

0 голосов
/ 01 января 2019

Короткий ответ: вы можете написать исходную документацию , используя scribble/srcdoc.

В отличие от других языков, которые вы упомянули, это не "строки документа":

  • Несмотря на то, что вы можете писать простой текст, у вас есть полные выражения Racket и вы можете использовать scribble/manual форм и функций.

  • Это не толькоЕсли учесть «более богатую» документацию, она помещается в собственный подмодуль документации - аналогично тому, как вы можете помещать тесты в подмодули test.Это означает, что в документацию или тесты не добавляются накладные расходы времени выполнения.

Вам нужен один файл .scrbl, в котором вы используете scribble/extract для включения подмодуля (ов) документации.Однако, в любом случае, вам, вероятно, нужен такой файл для документации, не относящейся к функциям (например, введение, установка или проза «Руководство пользователя», а не «справочная» документация стиля).

Конечно, выможете определить свой собственный синтаксис для переноса scribble/srcdoc.Например, в одном проекте я определил небольшой макрос define/doc, который расширяется до proc-doc/names, а также формы (module+ test ___).Таким образом, примеры документов также могут использоваться в качестве модульных тестов.

Как Racket обрабатывает документацию в исходном коде, пересекает несколько интересных аспектов Racket:

  • Подмодули позволяет вам определять такие вещи, как «время тестирования» и «время документа», а также время выполнения.

  • выражения-выражения отличаютсясинтаксис для s-выражений, особенно хорош при написании текста.

  • Scribble - это пример использования собственного языка - документации как программы - демонстрирующий способность Racket непросто язык программирования, но язык программирования на языке программирования .

...