多行注释
— 焉知非鱼multiline comments
RFC 5,作者:Michael J. Mathews。多行注释
这是第一个与文档有关的 RFC 提案。它要求在大多数现代编程语言中提供一个共同的功能:多行注释。
没有多行注释的问题非常明显:如果你需要注释一大段代码,你需要在每一行的开头手动插入一个 #
符号(在 Raku 中)。如果你没有一个文本编辑器来完成这个工作,这可能会非常的乏味,比如说,一个快捷键或类似的工具。这种做法在大型代码库中非常常见。出于这个原因,Michael 将 C++
和 Java
称为:
流行的语言,从一开始就被设计为对大型项目有用,实现了单行和多行注释。
在这些语言中,你可以输入如下注释:
// single line of code
/*
Several lines of code
*/
但是,除此之外,在 Java
中,你还有一种特殊的多行注释语法1来编写文档。
/**
* Here you can write the doc!
*
*/
很多人提出 POD
是解决这个问题的方法,但是 Michael 列出了一些不便之处:
- “它不直观”:鉴于 POD 只用于
Perl
,来自不同语言的人学习全新的语法将面临一些困难。
在我看来,这并不是一个大问题,因为 POD6
的语法很简单,而且它有很好的文档。此外,对于新手来说,它是相当直观的:如果你想要一个标头,你用 =head1
,如果你想要斜体,你用 I<>
等等。
-
“这不是文档”:这个还是对的。主要问题是,当你想注释一大段代码时,那很可能不是文档,所以使用
=begin pod ... =end pod
就有点奇怪了。 -
“它不鼓励一致性”:
POD
的另一个问题是,你可以在它的语法中使用任意项。
=begin ARBITRARYTEXT
...
=end ARBITRARYTEXT
虽然这种行为给了我们很大的自由度,但也使不同项目和用户的一致性变得复杂。
经过讨论,Perl
选择了 POD
来实现多行注释。尽管如此,Michael 的建议还是被采纳了,Raku 支持类似于 C++
和 Java
的多行注释,但语法略有不同:
#`[
Raku is a large-project-friendly
language too!
]
say ":D";
而作为一个好奇心,Raku 有嵌入式注释,就是:
if #`( embedded comment ) True {
say "Raku is awesome";
}
最后,作为现代的百年语言,Raku 给你的方式不止一种,所以选择最适合你的方式吧!
-
这并不是真正的多行注释 因为你还需要在每一行的开头打上
*
号。 ↩︎