我们是否需要私有变量的 getter 和 setter


Do we need getter and setter for private variables

我们真的需要私有变量的getter和setter吗?由于它们仅在对象中使用,因此我无法在其他任何地方使用认为没有必要。

我查看了一些框架,我看到有一个混合。有时有getter/setter有时没有(例如Symfony2框架)。

我的观点是,他们在我的课堂上只占用了太多的代码行。

如果要更改或读取值,则只需要一个二传手或getter。例如,如果您只制作一个 getter,则该值是只读的。

这取决于您的需求,但即使您只是在内部使用它们,请考虑以下方案:

class CalendarEvent{
  private $date;
  // with type hinting, you are sure to deal with a DateTime instance  
  public function setDate(DateTime $date){
    $this->date = $date;
  }
  public function getDate(){
    return $this->date;
  }
}

在所有代码库中保持一致,在我看来,为每个属性设置getter/setter不会有什么坏处。

[占用太多代码行不应该是争论,只要它们有用。

即使私下(在对象内部)如果你想设置/更改几倍的私有属性的值,如果你必须对值进行操作/验证,你可以从 getter/setter 中受益,即一些清理,控制是否为空或类似的东西......它只是一个指导方针,而不是一个规则,必须在每种情况下进行评估。