有什么理由不对类属性进行分组吗?


Is there any reason not to group class properties?

我使用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标记为已更改,并且审稿人将不得不阅读整行。这条线变化的概率更高;
  • 注释组中的单个变量是不容易的。