Конвенции комментируя сюсюкать



что такое соглашение Lisp о том, сколько точек с запятой использовать для различных видов комментариев (и какой уровень отступа для различных чисел точек с запятой должен быть)?



кроме того, существует ли какое-либо соглашение о том, когда использовать комментарии с запятой и когда использовать #|multiline comments|# (предполагая, что они существуют и существуют на множестве реализаций)?

561   4  

4 ответов:

В Common Lisp:

;;;; At the top of source files

;;; Comments at the beginning of the line

(defun test (a &optional b)
  ;; Commends indented along with code
  (do-something a)                      ; Comments indented at column 40, or the last
  (do-something-else b))                ; column + 1 space if line exceeds 38 columns

Примечание: Emacs не fontify #| |# очень хорошо, но как Райнер говорит в комментариях, попробуйте использовать .

я бы сказал, что нет правил для использования этого, но я считаю, что это быстрее для комментирования огромного количества кода или для вставки некоторого длинного описания, где точки с запятой просто мешают редактированию, например, огромные списки BNF или тому подобное.

есть аккуратный трюк, чтобы отключить код, который должен префикс выражение с #+(or):

(defun test (a &optional b)
  #+(or)
  (do-something a)
  (do-something-else b))

Примечание: #+nil обычно тоже работает, если у вас есть nil или :nil характеристика. Преимущество #+(or) это то, что вы можете легко редактировать его, либо комментируя его или изменить его на #+(and), или фактически включить набор функций, на которых вы действительно хотите, чтобы это выражение было прочитано.

слизь помогает здесь, фонтифицируя форму (do-something a) как комментарий, когда у вас есть Лисп работает.

помимо Особый синтаксис комментариев Common Lisp и трюки, такие как #| |# и #+(or) или более часто видели #+nil, Я считаю, что правила запятой широко применяются и в других шепелявит.


вот отрывок из спецификация, обратите внимание, как текущая практика расходится в отношении одной точки с запятой:

2.4.4.2 Примечания о стиле Для точки с запятой

некоторые текстовые редакторы делают предположения о желании отступ, основанный на количестве точек с запятой, которые начинаются с комментария. Следующие соглашения о стиле являются общими,хотя и не универсальными.

2.4.4.2.1 использование одной точки с запятой

комментарии, которые начинаются с одной точки с запятой, все выровнены по одному столбцу справа (иногда называемому "столбцом комментариев"). Текст такого комментария обычно применяется только к строке, на которой он появляется. Иногда два или три содержат одно предложение вместе; это иногда указывается отступом всех, кроме первого, с дополнительным пробелом (после точки с запятой).

2.4.4.2.2 использование двойной точки с запятой

комментарии, начинающиеся с двойной точки с запятой, все выровнены по тому же уровню отступа, что и форма, находящаяся в той же позиции в коде. Текст такого комментария обычно описывает состояние программы в точке, где происходит комментарий, код, который следует за комментарием, или оба.

2.4.4.2.3 использование тройной точки с запятой

комментарии, которые начинаются с тройной точки с запятой, все выровнены по левому краю. Обычно они используются до определения или набора определений, а не внутри определения.

2.4.4.2.4 использование четырехкратной точки с запятой

комментарии, которые начинаются с четырехкратной точки с запятой, все выровнены по левому краю и обычно содержат только короткий фрагмент текста, который служит заголовок для кода, который следует ниже, и может использоваться в верхнем или нижнем колонтитуле программы, которая готовит код для представления в виде печатного документа.

2.4.4.2.5 примеры стиля для точки с запятой

;;;; Math Utilities

;;; FIB computes the the Fibonacci function in the traditional
;;; recursive way.

(defun fib (n)
  (check-type n integer)
  ;; At this point we're sure we have an integer argument.
  ;; Now we can get down to some serious computation.
  (cond ((< n 0)
         ;; Hey, this is just supposed to be a simple example.
         ;; Did you really expect me to handle the general case?
         (error "FIB got ~D as an argument." n))
        ((< n 2) n)             ;fib[0]=0 and fib[1]=1
        ;; The cheap cases didn't work.
        ;; Nothing more to do but recurse.
        (t (+ (fib (- n 1))     ;The traditional formula
              (fib (- n 2)))))) ; is fib[n-1]+fib[n-2].

многострочные комментарии # / / # часто используются для комментирования больших объемов кода Lisp или кода примера. Поскольку некоторые реализации Emacs, похоже, испытывают проблемы с их анализом, некоторые вместо этого используют#||||#.

для использования точек с запятой см. пример комментария в книге Common Lisp язык (стр. 348), 1984, Digital Press, by Guy L. Steele Jr.:

;;;; COMMENT-EXAMPLE function. 
;;; This function is useless except to demonstrate comments. 
;;; (Actually, this example is much too cluttered with them.) 

(defun comment-example (x y)      ;X is anything; Y is an a-list. 
  (cond ((listp x) x)             ;If X is a list, use that. 
        ;; X is now not a list.  There are two other cases. 
        ((symbolp x) 
        ;; Look up a symbol in the a-list. 
        (cdr (assoc x y)))        ;Remember, (cdr nil) is nil. 
        ;; Do this when all else fails: 
        (t (cons x                ;Add x to a default list. 
                 '((lisp t)       ;LISP is okay. 
                   (fortran nil)  ;FORTRAN is not. 
                   (pl/i -500)    ;Note that you can put comments in 
                   (ada .001)     ; "data" as well as in "programs". 
                   ;; COBOL?? 
                   (teco -1.0e9))))))

в этом примере комментарии могут начинаться с одного до четырех запятые.

  • комментарии с одной точкой с запятой выровнены по одному столбцу справа; обычно каждый комментарий касается только кода, рядом с которым он находится. Иногда комментарий достаточно длинный, чтобы занять две или три строки; в этом случае принято отступать от непрерывных строк комментария на один пробел (после точки с запятой).

  • комментарии с двойной точкой с запятой выравниваются по уровню отступа кода. А пространство условно следует за двумя точками с запятой. Такие комментарии обычно описывают состояние программы в этот момент или раздел кода, который следует за комментарий.

  • комментарии с тремя точками с запятой выровнены по левому краю. Они обычно документируют целые программы или большие блоки кода.

  • комментарии с четырьмя точками с запятой обычно указывают названия целых программ или больших блоков кода.

стандартная ссылка для Common Lisp style, включая соглашения о комментариях, - Это Питер Норвиг и Кент Питман учебник по хорошему стилю программирования Lisp.

вместо того, чтобы описывать его здесь, посмотрите на на этой странице. Это говорит о Emacs Lisp, но соглашение одинаково во всех lisps (и схемах).

Comments

    Ничего не найдено.