调用代码的注释是语言特性还是反模式?
Are comments invoking code a language feature or antipattern?
我偶然发现了一些 Nette 代码,其中注释用于设置 class 属性,并且 Nette doc approves it:
class Foo {
/** @var someClass @inject */
public $bar;
}
有了 PHP 反思,我应该更多地使用注释调用代码作为标准语言功能(“基于注释的编码”),还是应该避免将其作为反模式?是否有任何权威资源提倡或谴责此类评论处理?
PHP 直到最近才支持注释。 PHP 8 introduced attributes。它于 2020 年 11 月下旬发布。截至目前,属性尚未得到广泛支持。
您示例中的伪注释是当前大多数主要框架和库(如 Doctrine ORM)使用的最佳实践。后者甚至提供了一个 doctrine/annotations-library 使得使用这些用户土地注释更加方便。
至于这是否是一个好的做法的权威来源,在 RFC 中明确提到了语言特性:https://wiki.php.net/rfc/attributes_v2#userland_use-casemigrating_doctrine_annotations_from_docblocks_to_attributes(RFC 中的语法看起来与实际的属性语法不同,因为它已更改)。
我偶然发现了一些 Nette 代码,其中注释用于设置 class 属性,并且 Nette doc approves it:
class Foo {
/** @var someClass @inject */
public $bar;
}
有了 PHP 反思,我应该更多地使用注释调用代码作为标准语言功能(“基于注释的编码”),还是应该避免将其作为反模式?是否有任何权威资源提倡或谴责此类评论处理?
PHP 直到最近才支持注释。 PHP 8 introduced attributes。它于 2020 年 11 月下旬发布。截至目前,属性尚未得到广泛支持。
您示例中的伪注释是当前大多数主要框架和库(如 Doctrine ORM)使用的最佳实践。后者甚至提供了一个 doctrine/annotations-library 使得使用这些用户土地注释更加方便。
至于这是否是一个好的做法的权威来源,在 RFC 中明确提到了语言特性:https://wiki.php.net/rfc/attributes_v2#userland_use-casemigrating_doctrine_annotations_from_docblocks_to_attributes(RFC 中的语法看起来与实际的属性语法不同,因为它已更改)。