第一种格式样式似乎比第二种更受欢迎。这是为什么?
第一个(每行都有星号)
/*
* line 1
* line 2
* line 3
*/
第二个(最少星号数量)
/*
line 1
line 2
line 3
*/
可能是因为它更具可读性,如果评论有很多行,即使看不到结尾,您也知道自己正在阅读评论。
主要原因是 PHP 文档管理人员。
诸如 PHPDoc 之类的文档是为了解析这种形式的注释块而构建的,可解析注释块的示例如下:
/**
* Page-Level DocBlock
* @package MyPackage
* @category mycategory
*/
正如您所看到的,每行都有星号,并且有些行包含
@
符号,这就是您所说的标签指示符,它告诉解析器应处理该行并将其归档到文档的类别值下.
另请参阅 Zend 编码标准 - 内联文档,这也指出您应该使用这种类型的注释来实现此类解析器和可读性。
更容易看到评论的开始和结束位置。
只需向下扫描左列,直到星号“用完”即可找到下一位代码。
第一种方法失败的地方是重写注释的时候。现在需要重新格式化行以使星号对齐。这是一个禁忌,除非您有一个工具可以自动为您执行此操作。
在 McConnell 的“Code Complete”(第二版),第 790 页中,他说:
对于较长的注释,创建长双斜杠列、手动断开行之间的文本行以及类似的活动的任务并不是很有价值,因此 /* ... */ 语法更适合多行注释。
重点是你应该注意如何度过你的时间。如果您花费大量时间输入和删除[文本]以使[星号]对齐,那么您就不是在编程;而是在编程。你在浪费时间。寻找更高效的风格。
就我个人而言,我对每条注释都使用
//
,并保留 /* */
以用于临时用途,例如在重构时注释掉许多函数。 使用 /* */
进行块注释会阻止我快速注释大量代码。
所以我的块评论看起来像这样:
//*****************************
// Some
// Comments
// Here
//*****************************
它(可以说)更具可读性或更好看。人们使用 ASCII 艺术已经有一段时间了,例如
/*********************
* here is the doc *
*********************/
或者什么的。
我喜欢它,因为它在视觉上区分了块注释的代码和文档。
如果我想注释掉一堆代码,这样:
/*
int i;
someCode(i);
print i;
*/
更好,因为我可以移动开始/结束部分来启用其中的一部分,或者只删除两行来启用全部。 使用其他格式我无法做到这一点。 因此,文档最好采用其他样式,因为您永远不会尝试“取消注释”文档。
现在,有了丰富的编辑器,我更喜欢使用行注释来注释代码,但这是另一个论点。
注释掉的代码的在线注释
我更喜欢注释掉的代码:
// int i;
// someCode(i);
// print i;
造成这种情况的原因有很多。 首先,它可以轻松地取消注释(启用)一行。 其次,它提供了更好的视觉指示,表明它已被注释掉,然后您将获得块注释(这依赖于语法突出显示,正如其他人提到的)。
但第三,也是最重要的,它允许您在注释内容中安全地包含块注释。
当我注释掉以下内容时,请观察 SO 语法突出显示的差异:
/**
* Does something to i and then prints i
*/
public void messWithI() {
int i;
someCode(i);
print i;
}
带有块评论:
/*/**
* Does something to i and then prints i
*/
public void messWithI() {
int i;
someCode(i);
print i;
}*/
带有行注释:
// /**
// * Does something to i and then prints i
// */
// public void messWithI() {
// int i;
// someCode(i);
// print i;
// }
您需要一个功能丰富的编辑器的原因是,如果您以这种方式手动应用/删除注释,则需要大量的击键。 IDE 具有可以为您执行此操作的实用程序(Eclipse 是 CTRL-/),高级文本编辑器具有宏或至少具有垂直选择。
我写了一个工具来生成我的评论。 它允许我输入任意数量的行。如果编辑器允许,它将使用实际的线条图 ascii,并让我选择居中、双线轮廓、前导注释字符串应该是什么等。我还可以选择以我的注释起始字符开始一行,输入我喜欢多少行,从文本的末尾到第一行的某个位置突出显示,按下一个键,然后这一切都会变成一个漂亮的阻止评论。 您可以输入评论,按一下键,该行就会自动为您加上方框。 当然,您需要使用等宽的完整字体,例如 Consolas。
'========> ╔═══════════════════════════════════╗
'========> ║ ║
'========> ║ This is a sample ║
'========> ║ multiline text ║
'========> ║ with added buffer above adn below ║
'========> ║ ║
'========> ╚═══════════════════════════════════╝
;┌──────────────────────────────────┐
;│ Custom array join with delimiter │
;└──────────────────────────────────┘