Конвенции комментируя сюсюкать
что такое соглашение Lisp о том, сколько точек с запятой использовать для различных видов комментариев (и какой уровень отступа для различных чисел точек с запятой должен быть)?
кроме того, существует ли какое-либо соглашение о том, когда использовать комментарии с запятой и когда использовать #|multiline comments|# (предполагая, что они существуют и существуют на множестве реализаций)?
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