我使用docblock来提示类属性,直到最近才意识到类属性可以这样分组:
/**
* @var string
*/
private $firstname, $surname, $location;
比这更容易读,更短:
/**
* @var string
*/
private $firstname;
/**
* @var string
*/
private $surname;
/**
* @var string
*/
private $location;
有什么理由不这样做吗?
我更喜欢第一种方法,因为PSR-2说"每个语句声明的属性不能超过一个"。这是有充分理由的,以下是我的一些想法,我猜PSR-2的作者也有:
- 人们不希望每行看到多个声明(至少我和我的同事);
- 更改变量的类型比较困难,例如
$location
从字符串更改为Location类。 - 更难阅读差异:如果任何变量的名称发生变化,该行将被VCS标记为已更改,并且审稿人将不得不阅读整行。这条线变化的概率更高;
- 注释组中的单个变量是不容易的。